diff --git a/docs/api/graphql/v1/guides/mutations.mdx b/docs/api/graphql/v1/guides/mutations.mdx
index 8a70fb6..55df9ff 100644
--- a/docs/api/graphql/v1/guides/mutations.mdx
+++ b/docs/api/graphql/v1/guides/mutations.mdx
@@ -46,37 +46,6 @@ All mutations return a payload object with:
| `result` | Resource type | The created/updated resource (null on failure) |
| `messages` | `[ValidationMessage]` | Validation errors (empty on success) |
-## Identifier Pattern
-
-When creating resources, you provide a short `id` in the input:
-
-```graphql
-input: {
- id: "staging" # Short identifier you choose
- name: "Staging"
-}
-```
-
-The API returns a full identifier that includes parent context:
-
-```json
-{
- "result": {
- "id": "myproj-staging" # Full identifier
- }
-}
-```
-
-Use the full identifier for subsequent queries and mutations:
-
-```graphql
-query {
- environment(organizationId: "acme", id: "myproj-staging") {
- name
- }
-}
-```
-
## Common Mutations
### Create Project
diff --git a/docs/api/graphql/v1/operations/mutations/add-service-account-to-group.mdx b/docs/api/graphql/v1/operations/mutations/add-service-account-to-group.mdx
new file mode 100644
index 0000000..86c8054
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/add-service-account-to-group.mdx
@@ -0,0 +1,75 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: add-service-account-to-group
+title: addServiceAccountToGroup
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Add a service account to a group, granting it the group's access level.
+
+
+```graphql
+addServiceAccountToGroup(
+ organizationId: ID!
+ serviceAccountId: ID!
+ groupId: ID!
+): ServiceAccountGroupPayload
+```
+
+
+
+
+### Arguments
+
+#### [addServiceAccountToGroup.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [addServiceAccountToGroup.serviceAccountId](#service-account-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#service-account-id\}
+The service account ID
+
+
+#### [addServiceAccountToGroup.groupId](#group-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#group-id\}
+The group ID to add the service account to
+
+
+### Type
+
+#### [ServiceAccountGroupPayload](/api/graphql/v1/types/objects/service-account-group-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/create-access-token.mdx b/docs/api/graphql/v1/operations/mutations/create-access-token.mdx
new file mode 100644
index 0000000..6289568
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/create-access-token.mdx
@@ -0,0 +1,86 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-access-token
+title: createAccessToken
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Create a scoped, time-limited access token. The token value is only returned in this response.
+
+
+
+
+```graphql
+createAccessToken(
+ organizationId: ID!
+ input: CreateAccessTokenInput!
+): AccessTokenWithValuePayload
+```
+
+
+
+
+
+### Form Schema
+
+This mutation supports dynamic form generation using JSON Schema.
+
+- [JSON Schema](https://api.massdriver.cloud/graphql/v1/inputs/createAccessToken.json)
+- [UI Schema](https://api.massdriver.cloud/graphql/v1/inputs/createAccessToken.ui.json)
+
+
+
+### Arguments
+
+#### [createAccessToken.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [createAccessToken.input](#input)[CreateAccessTokenInput!](/api/graphql/v1/types/inputs/create-access-token-input.mdx) \{#input\}
+Create a scoped, time-limited access token for API authentication.
+
+
+### Type
+
+#### [AccessTokenWithValuePayload](/api/graphql/v1/types/objects/access-token-with-value-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/create-group-invitation.mdx b/docs/api/graphql/v1/operations/mutations/create-group-invitation.mdx
new file mode 100644
index 0000000..98a9124
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/create-group-invitation.mdx
@@ -0,0 +1,75 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-group-invitation
+title: createGroupInvitation
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Invite a user to a group by email address.
+
+
+```graphql
+createGroupInvitation(
+ organizationId: ID!
+ groupId: ID!
+ email: String!
+): GroupInvitationPayload
+```
+
+
+
+
+### Arguments
+
+#### [createGroupInvitation.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [createGroupInvitation.groupId](#group-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#group-id\}
+The group ID to invite the user to
+
+
+#### [createGroupInvitation.email](#email)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#email\}
+Email address of the user to invite
+
+
+### Type
+
+#### [GroupInvitationPayload](/api/graphql/v1/types/objects/group-invitation-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/create-group.mdx b/docs/api/graphql/v1/operations/mutations/create-group.mdx
new file mode 100644
index 0000000..951eb61
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/create-group.mdx
@@ -0,0 +1,86 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-group
+title: createGroup
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Create a new group in your organization.
+
+
+
+
+```graphql
+createGroup(
+ organizationId: ID!
+ input: CreateGroupInput!
+): GroupPayload
+```
+
+
+
+
+
+### Form Schema
+
+This mutation supports dynamic form generation using JSON Schema.
+
+- [JSON Schema](https://api.massdriver.cloud/graphql/v1/inputs/createGroup.json)
+- [UI Schema](https://api.massdriver.cloud/graphql/v1/inputs/createGroup.ui.json)
+
+
+
+### Arguments
+
+#### [createGroup.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [createGroup.input](#input)[CreateGroupInput!](/api/graphql/v1/types/inputs/create-group-input.mdx) \{#input\}
+Create a new group. Groups control which projects members can access.
+
+
+### Type
+
+#### [GroupPayload](/api/graphql/v1/types/objects/group-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/create-integration.mdx b/docs/api/graphql/v1/operations/mutations/create-integration.mdx
new file mode 100644
index 0000000..b385019
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/create-integration.mdx
@@ -0,0 +1,91 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-integration
+title: createIntegration
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Create and activate an integration for your organization.
+
+
+
+
+```graphql
+createIntegration(
+ organizationId: ID!
+ id: ID!
+ input: CreateIntegrationInput!
+): IntegrationActivationPayload
+```
+
+
+
+
+
+### Form Schema
+
+This mutation supports dynamic form generation using JSON Schema.
+
+- [JSON Schema](https://api.massdriver.cloud/graphql/v1/inputs/createIntegration.json)
+- [UI Schema](https://api.massdriver.cloud/graphql/v1/inputs/createIntegration.ui.json)
+
+
+
+### Arguments
+
+#### [createIntegration.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [createIntegration.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The integration type to configure (e.g., 'aws-cost-and-usage-reports')
+
+
+#### [createIntegration.input](#input)[CreateIntegrationInput!](/api/graphql/v1/types/inputs/create-integration-input.mdx) \{#input\}
+Create and activate an integration for your organization. The config and auth payloads must conform to the integration type's configSchema and authSchema respectively.
+
+
+### Type
+
+#### [IntegrationActivationPayload](/api/graphql/v1/types/objects/integration-activation-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/create-organization-tag-constraint.mdx b/docs/api/graphql/v1/operations/mutations/create-organization-tag-constraint.mdx
new file mode 100644
index 0000000..98f10b6
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/create-organization-tag-constraint.mdx
@@ -0,0 +1,86 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-organization-tag-constraint
+title: createOrganizationTagConstraint
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Create a new tag constraint in your organization.
+
+
+
+
+```graphql
+createOrganizationTagConstraint(
+ organizationId: ID!
+ input: CreateOrganizationTagConstraintInput!
+): OrganizationTagConstraintPayload
+```
+
+
+
+
+
+### Form Schema
+
+This mutation supports dynamic form generation using JSON Schema.
+
+- [JSON Schema](https://api.massdriver.cloud/graphql/v1/inputs/createOrganizationTagConstraint.json)
+- [UI Schema](https://api.massdriver.cloud/graphql/v1/inputs/createOrganizationTagConstraint.ui.json)
+
+
+
+### Arguments
+
+#### [createOrganizationTagConstraint.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [createOrganizationTagConstraint.input](#input)[CreateOrganizationTagConstraintInput!](/api/graphql/v1/types/inputs/create-organization-tag-constraint-input.mdx) \{#input\}
+Define a structural tag constraint for your organization. Tag constraints control which tags can be set on resources at each level of the hierarchy.
+
+
+### Type
+
+#### [OrganizationTagConstraintPayload](/api/graphql/v1/types/objects/organization-tag-constraint-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/create-service-account.mdx b/docs/api/graphql/v1/operations/mutations/create-service-account.mdx
new file mode 100644
index 0000000..bcd84ee
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/create-service-account.mdx
@@ -0,0 +1,86 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-service-account
+title: createServiceAccount
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Create a new service account. The secret token is only returned in this response.
+
+
+
+
+```graphql
+createServiceAccount(
+ organizationId: ID!
+ input: CreateServiceAccountInput!
+): ServiceAccountWithSecretPayload
+```
+
+
+
+
+
+### Form Schema
+
+This mutation supports dynamic form generation using JSON Schema.
+
+- [JSON Schema](https://api.massdriver.cloud/graphql/v1/inputs/createServiceAccount.json)
+- [UI Schema](https://api.massdriver.cloud/graphql/v1/inputs/createServiceAccount.ui.json)
+
+
+
+### Arguments
+
+#### [createServiceAccount.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [createServiceAccount.input](#input)[CreateServiceAccountInput!](/api/graphql/v1/types/inputs/create-service-account-input.mdx) \{#input\}
+Create a new service account for programmatic API access.
+
+
+### Type
+
+#### [ServiceAccountWithSecretPayload](/api/graphql/v1/types/objects/service-account-with-secret-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/delete-group-invitation.mdx b/docs/api/graphql/v1/operations/mutations/delete-group-invitation.mdx
new file mode 100644
index 0000000..c724305
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/delete-group-invitation.mdx
@@ -0,0 +1,75 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: delete-group-invitation
+title: deleteGroupInvitation
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Remove a pending invitation from a group.
+
+
+```graphql
+deleteGroupInvitation(
+ organizationId: ID!
+ groupId: ID!
+ email: String!
+): GroupInvitationPayload
+```
+
+
+
+
+### Arguments
+
+#### [deleteGroupInvitation.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [deleteGroupInvitation.groupId](#group-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#group-id\}
+The group ID
+
+
+#### [deleteGroupInvitation.email](#email)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#email\}
+Email address of the invitation to remove
+
+
+### Type
+
+#### [GroupInvitationPayload](/api/graphql/v1/types/objects/group-invitation-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/delete-group-member.mdx b/docs/api/graphql/v1/operations/mutations/delete-group-member.mdx
new file mode 100644
index 0000000..221bd51
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/delete-group-member.mdx
@@ -0,0 +1,75 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: delete-group-member
+title: deleteGroupMember
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Remove a member from a group.
+
+
+```graphql
+deleteGroupMember(
+ organizationId: ID!
+ groupId: ID!
+ email: String!
+): GroupMemberPayload
+```
+
+
+
+
+### Arguments
+
+#### [deleteGroupMember.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [deleteGroupMember.groupId](#group-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#group-id\}
+The group ID
+
+
+#### [deleteGroupMember.email](#email)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#email\}
+Email address of the member to remove
+
+
+### Type
+
+#### [GroupMemberPayload](/api/graphql/v1/types/objects/group-member-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/delete-group.mdx b/docs/api/graphql/v1/operations/mutations/delete-group.mdx
new file mode 100644
index 0000000..0194670
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/delete-group.mdx
@@ -0,0 +1,70 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: delete-group
+title: deleteGroup
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Delete a custom group. Predefined organization groups cannot be deleted.
+
+
+```graphql
+deleteGroup(
+ organizationId: ID!
+ id: ID!
+): GroupPayload
+```
+
+
+
+
+### Arguments
+
+#### [deleteGroup.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [deleteGroup.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The group ID to delete
+
+
+### Type
+
+#### [GroupPayload](/api/graphql/v1/types/objects/group-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/delete-integration.mdx b/docs/api/graphql/v1/operations/mutations/delete-integration.mdx
new file mode 100644
index 0000000..66c04a5
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/delete-integration.mdx
@@ -0,0 +1,70 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: delete-integration
+title: deleteIntegration
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Delete an integration. This disables it first, then removes the configuration.
+
+
+```graphql
+deleteIntegration(
+ organizationId: ID!
+ id: ID!
+): IntegrationPayload
+```
+
+
+
+
+### Arguments
+
+#### [deleteIntegration.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [deleteIntegration.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The integration type ID to delete
+
+
+### Type
+
+#### [IntegrationPayload](/api/graphql/v1/types/objects/integration-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/delete-organization-member.mdx b/docs/api/graphql/v1/operations/mutations/delete-organization-member.mdx
new file mode 100644
index 0000000..9e2983a
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/delete-organization-member.mdx
@@ -0,0 +1,70 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: delete-organization-member
+title: deleteOrganizationMember
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Remove a member from the organization. Deletes all group memberships and pending invitations.
+
+
+```graphql
+deleteOrganizationMember(
+ organizationId: ID!
+ email: String!
+): DeletedOrganizationMemberPayload
+```
+
+
+
+
+### Arguments
+
+#### [deleteOrganizationMember.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [deleteOrganizationMember.email](#email)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#email\}
+Email address of the member to remove
+
+
+### Type
+
+#### [DeletedOrganizationMemberPayload](/api/graphql/v1/types/objects/deleted-organization-member-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/delete-organization-tag-constraint.mdx b/docs/api/graphql/v1/operations/mutations/delete-organization-tag-constraint.mdx
new file mode 100644
index 0000000..caa6ac4
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/delete-organization-tag-constraint.mdx
@@ -0,0 +1,70 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: delete-organization-tag-constraint
+title: deleteOrganizationTagConstraint
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Delete a tag constraint from your organization.
+
+
+```graphql
+deleteOrganizationTagConstraint(
+ organizationId: ID!
+ id: ID!
+): OrganizationTagConstraintPayload
+```
+
+
+
+
+### Arguments
+
+#### [deleteOrganizationTagConstraint.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [deleteOrganizationTagConstraint.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The tag constraint ID to delete
+
+
+### Type
+
+#### [OrganizationTagConstraintPayload](/api/graphql/v1/types/objects/organization-tag-constraint-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/delete-service-account.mdx b/docs/api/graphql/v1/operations/mutations/delete-service-account.mdx
new file mode 100644
index 0000000..07bc49d
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/delete-service-account.mdx
@@ -0,0 +1,70 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: delete-service-account
+title: deleteServiceAccount
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Delete a service account. This action cannot be undone.
+
+
+```graphql
+deleteServiceAccount(
+ organizationId: ID!
+ id: ID!
+): ServiceAccountPayload
+```
+
+
+
+
+### Arguments
+
+#### [deleteServiceAccount.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [deleteServiceAccount.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The service account ID to delete
+
+
+### Type
+
+#### [ServiceAccountPayload](/api/graphql/v1/types/objects/service-account-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/remove-remote-reference.mdx b/docs/api/graphql/v1/operations/mutations/remove-remote-reference.mdx
new file mode 100644
index 0000000..e98409a
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/remove-remote-reference.mdx
@@ -0,0 +1,90 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: remove-remote-reference
+title: removeRemoteReference
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Remove a remote reference from an instance.
+
+The reference can only be removed if no provisioned instances are connected
+through it. Removing the last remote reference resets the instance status
+from EXTERNAL back to INITIALIZED.
+
+
+
+
+```graphql
+removeRemoteReference(
+ organizationId: ID!
+ input: RemoveRemoteReferenceInput!
+): RemoteReferencePayload
+```
+
+
+
+
+
+### Form Schema
+
+This mutation supports dynamic form generation using JSON Schema.
+
+- [JSON Schema](https://api.massdriver.cloud/graphql/v1/inputs/removeRemoteReference.json)
+- [UI Schema](https://api.massdriver.cloud/graphql/v1/inputs/removeRemoteReference.ui.json)
+
+
+
+### Arguments
+
+#### [removeRemoteReference.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [removeRemoteReference.input](#input)[RemoveRemoteReferenceInput!](/api/graphql/v1/types/inputs/remove-remote-reference-input.mdx) \{#input\}
+Remove a remote reference from an instance. The reference can only be removed if no provisioned instances are connected through it.
+
+
+### Type
+
+#### [RemoteReferencePayload](/api/graphql/v1/types/objects/remote-reference-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/remove-service-account-from-group.mdx b/docs/api/graphql/v1/operations/mutations/remove-service-account-from-group.mdx
new file mode 100644
index 0000000..62f7385
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/remove-service-account-from-group.mdx
@@ -0,0 +1,75 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: remove-service-account-from-group
+title: removeServiceAccountFromGroup
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Remove a service account from a group.
+
+
+```graphql
+removeServiceAccountFromGroup(
+ organizationId: ID!
+ serviceAccountId: ID!
+ groupId: ID!
+): ServiceAccountGroupPayload
+```
+
+
+
+
+### Arguments
+
+#### [removeServiceAccountFromGroup.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [removeServiceAccountFromGroup.serviceAccountId](#service-account-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#service-account-id\}
+The service account ID
+
+
+#### [removeServiceAccountFromGroup.groupId](#group-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#group-id\}
+The group ID to remove the service account from
+
+
+### Type
+
+#### [ServiceAccountGroupPayload](/api/graphql/v1/types/objects/service-account-group-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/revoke-access-token.mdx b/docs/api/graphql/v1/operations/mutations/revoke-access-token.mdx
new file mode 100644
index 0000000..92ddb88
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/revoke-access-token.mdx
@@ -0,0 +1,70 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: revoke-access-token
+title: revokeAccessToken
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Revoke an access token. The token immediately stops working but the record is preserved for audit.
+
+
+```graphql
+revokeAccessToken(
+ organizationId: ID!
+ id: ID!
+): AccessTokenPayload
+```
+
+
+
+
+### Arguments
+
+#### [revokeAccessToken.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [revokeAccessToken.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The access token ID to revoke
+
+
+### Type
+
+#### [AccessTokenPayload](/api/graphql/v1/types/objects/access-token-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/set-component-position.mdx b/docs/api/graphql/v1/operations/mutations/set-component-position.mdx
new file mode 100644
index 0000000..5920442
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/set-component-position.mdx
@@ -0,0 +1,96 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: set-component-position
+title: setComponentPosition
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Set the position of a component on the canvas.
+
+
+
+
+```graphql
+setComponentPosition(
+ organizationId: ID!
+ projectId: ID!
+ id: ID!
+ input: SetComponentPositionInput!
+): ComponentPayload
+```
+
+
+
+
+
+### Form Schema
+
+This mutation supports dynamic form generation using JSON Schema.
+
+- [JSON Schema](https://api.massdriver.cloud/graphql/v1/inputs/setComponentPosition.json)
+- [UI Schema](https://api.massdriver.cloud/graphql/v1/inputs/setComponentPosition.ui.json)
+
+
+
+### Arguments
+
+#### [setComponentPosition.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [setComponentPosition.projectId](#project-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#project-id\}
+The project ID
+
+
+#### [setComponentPosition.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The component ID
+
+
+#### [setComponentPosition.input](#input)[SetComponentPositionInput!](/api/graphql/v1/types/inputs/set-component-position-input.mdx) \{#input\}
+Set the position of a component on the canvas.
+
+
+### Type
+
+#### [ComponentPayload](/api/graphql/v1/types/objects/component-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/set-remote-reference.mdx b/docs/api/graphql/v1/operations/mutations/set-remote-reference.mdx
new file mode 100644
index 0000000..7936729
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/set-remote-reference.mdx
@@ -0,0 +1,89 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: set-remote-reference
+title: setRemoteReference
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Set a remote reference on an instance.
+
+Links an instance's resource field to a resource from another project or
+an imported resource. The instance must not be in a provisioned or failed state.
+
+
+
+
+```graphql
+setRemoteReference(
+ organizationId: ID!
+ input: SetRemoteReferenceInput!
+): RemoteReferencePayload
+```
+
+
+
+
+
+### Form Schema
+
+This mutation supports dynamic form generation using JSON Schema.
+
+- [JSON Schema](https://api.massdriver.cloud/graphql/v1/inputs/setRemoteReference.json)
+- [UI Schema](https://api.massdriver.cloud/graphql/v1/inputs/setRemoteReference.ui.json)
+
+
+
+### Arguments
+
+#### [setRemoteReference.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [setRemoteReference.input](#input)[SetRemoteReferenceInput!](/api/graphql/v1/types/inputs/set-remote-reference-input.mdx) \{#input\}
+Link an instance's resource field to a resource from another project or an imported resource. The instance must not be in a provisioned or failed state.
+
+
+### Type
+
+#### [RemoteReferencePayload](/api/graphql/v1/types/objects/remote-reference-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/mutations/update-group.mdx b/docs/api/graphql/v1/operations/mutations/update-group.mdx
new file mode 100644
index 0000000..c199d45
--- /dev/null
+++ b/docs/api/graphql/v1/operations/mutations/update-group.mdx
@@ -0,0 +1,91 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: update-group
+title: updateGroup
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Update a group's name or description.
+
+
+
+
+```graphql
+updateGroup(
+ organizationId: ID!
+ id: ID!
+ input: UpdateGroupInput!
+): GroupPayload
+```
+
+
+
+
+
+### Form Schema
+
+This mutation supports dynamic form generation using JSON Schema.
+
+- [JSON Schema](https://api.massdriver.cloud/graphql/v1/inputs/updateGroup.json)
+- [UI Schema](https://api.massdriver.cloud/graphql/v1/inputs/updateGroup.ui.json)
+
+
+
+### Arguments
+
+#### [updateGroup.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [updateGroup.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The group ID to update
+
+
+#### [updateGroup.input](#input)[UpdateGroupInput!](/api/graphql/v1/types/inputs/update-group-input.mdx) \{#input\}
+Update a group's name or description.
+
+
+### Type
+
+#### [GroupPayload](/api/graphql/v1/types/objects/group-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/queries/audit-log.mdx b/docs/api/graphql/v1/operations/queries/audit-log.mdx
new file mode 100644
index 0000000..291fbcf
--- /dev/null
+++ b/docs/api/graphql/v1/operations/queries/audit-log.mdx
@@ -0,0 +1,71 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: audit-log
+title: auditLog
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Get a single audit log event by its ID.
+
+
+```graphql
+auditLog(
+ organizationId: ID!
+ id: ID!
+): AuditLog
+```
+
+
+
+
+### Arguments
+
+#### [auditLog.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [auditLog.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The audit log event ID
+
+
+### Type
+
+#### [AuditLog](/api/graphql/v1/types/objects/audit-log.mdx)
+An audit log event with full details.
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/queries/audit-logs.mdx b/docs/api/graphql/v1/operations/queries/audit-logs.mdx
new file mode 100644
index 0000000..2234251
--- /dev/null
+++ b/docs/api/graphql/v1/operations/queries/audit-logs.mdx
@@ -0,0 +1,80 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: audit-logs
+title: auditLogs
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+List audit log events for your organization. Returns newest first by default.
+
+
+```graphql
+auditLogs(
+ organizationId: ID!
+ filter: AuditLogsFilter
+ sort: AuditLogsSort
+ cursor: Cursor
+): AuditLogsPage
+```
+
+
+
+
+### Arguments
+
+#### [auditLogs.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [auditLogs.filter](#filter)[AuditLogsFilter](/api/graphql/v1/types/inputs/audit-logs-filter.mdx) \{#filter\}
+Filter results
+
+
+#### [auditLogs.sort](#sort)[AuditLogsSort](/api/graphql/v1/types/inputs/audit-logs-sort.mdx) \{#sort\}
+How to sort results
+
+
+#### [auditLogs.cursor](#cursor)[Cursor](/api/graphql/v1/types/inputs/cursor.mdx) \{#cursor\}
+Pagination cursor from a previous response
+
+
+### Type
+
+#### [AuditLogsPage](/api/graphql/v1/types/objects/audit-logs-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/queries/group.mdx b/docs/api/graphql/v1/operations/queries/group.mdx
new file mode 100644
index 0000000..42f71d8
--- /dev/null
+++ b/docs/api/graphql/v1/operations/queries/group.mdx
@@ -0,0 +1,71 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: group
+title: group
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Get a single group by its ID.
+
+
+```graphql
+group(
+ organizationId: ID!
+ id: ID!
+): Group
+```
+
+
+
+
+### Arguments
+
+#### [group.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [group.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The group ID
+
+
+### Type
+
+#### [Group](/api/graphql/v1/types/objects/group.mdx)
+A group with its full details.
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/queries/groups.mdx b/docs/api/graphql/v1/operations/queries/groups.mdx
new file mode 100644
index 0000000..b93f1bf
--- /dev/null
+++ b/docs/api/graphql/v1/operations/queries/groups.mdx
@@ -0,0 +1,75 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: groups
+title: groups
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+List all groups in your organization. Returns a paginated list.
+
+
+```graphql
+groups(
+ organizationId: ID!
+ sort: GroupsSort
+ cursor: Cursor
+): GroupsPage
+```
+
+
+
+
+### Arguments
+
+#### [groups.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [groups.sort](#sort)[GroupsSort](/api/graphql/v1/types/inputs/groups-sort.mdx) \{#sort\}
+How to sort results
+
+
+#### [groups.cursor](#cursor)[Cursor](/api/graphql/v1/types/inputs/cursor.mdx) \{#cursor\}
+Pagination cursor from a previous response
+
+
+### Type
+
+#### [GroupsPage](/api/graphql/v1/types/objects/groups-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/queries/integration-types.mdx b/docs/api/graphql/v1/operations/queries/integration-types.mdx
new file mode 100644
index 0000000..ddeabad
--- /dev/null
+++ b/docs/api/graphql/v1/operations/queries/integration-types.mdx
@@ -0,0 +1,65 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration-types
+title: integrationTypes
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+List all supported integration types. Use these to discover what integrations are available and their configuration schemas.
+
+
+```graphql
+integrationTypes(
+ organizationId: ID!
+): IntegrationTypesPage
+```
+
+
+
+
+### Arguments
+
+#### [integrationTypes.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+### Type
+
+#### [IntegrationTypesPage](/api/graphql/v1/types/objects/integration-types-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/queries/integration.mdx b/docs/api/graphql/v1/operations/queries/integration.mdx
new file mode 100644
index 0000000..2f1971c
--- /dev/null
+++ b/docs/api/graphql/v1/operations/queries/integration.mdx
@@ -0,0 +1,71 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration
+title: integration
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Get a single integration by its type ID.
+
+
+```graphql
+integration(
+ organizationId: ID!
+ id: ID!
+): Integration
+```
+
+
+
+
+### Arguments
+
+#### [integration.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [integration.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+The integration type ID (e.g., 'aws-cost-and-usage-reports')
+
+
+### Type
+
+#### [Integration](/api/graphql/v1/types/objects/integration.mdx)
+A configured integration with its full details.
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/queries/integrations.mdx b/docs/api/graphql/v1/operations/queries/integrations.mdx
new file mode 100644
index 0000000..c20b122
--- /dev/null
+++ b/docs/api/graphql/v1/operations/queries/integrations.mdx
@@ -0,0 +1,80 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integrations
+title: integrations
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+List your organization's configured integrations.
+
+
+```graphql
+integrations(
+ organizationId: ID!
+ filter: IntegrationsFilter
+ sort: IntegrationsSort
+ cursor: Cursor
+): IntegrationsPage
+```
+
+
+
+
+### Arguments
+
+#### [integrations.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+#### [integrations.filter](#filter)[IntegrationsFilter](/api/graphql/v1/types/inputs/integrations-filter.mdx) \{#filter\}
+Filter results
+
+
+#### [integrations.sort](#sort)[IntegrationsSort](/api/graphql/v1/types/inputs/integrations-sort.mdx) \{#sort\}
+How to sort results
+
+
+#### [integrations.cursor](#cursor)[Cursor](/api/graphql/v1/types/inputs/cursor.mdx) \{#cursor\}
+Pagination cursor from a previous response
+
+
+### Type
+
+#### [IntegrationsPage](/api/graphql/v1/types/objects/integrations-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/operations/queries/organization.mdx b/docs/api/graphql/v1/operations/queries/organization.mdx
new file mode 100644
index 0000000..90fc4fa
--- /dev/null
+++ b/docs/api/graphql/v1/operations/queries/organization.mdx
@@ -0,0 +1,66 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: organization
+title: organization
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Get your organization and its settings.
+
+
+```graphql
+organization(
+ organizationId: ID!
+): Organization
+```
+
+
+
+
+### Arguments
+
+#### [organization.organizationId](#organization-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#organization-id\}
+Your organization ID
+
+
+### Type
+
+#### [Organization](/api/graphql/v1/types/objects/organization.mdx)
+An organization with its full details and related resources.
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/enums/audit-log-actor-type.mdx b/docs/api/graphql/v1/types/enums/audit-log-actor-type.mdx
new file mode 100644
index 0000000..2d009be
--- /dev/null
+++ b/docs/api/graphql/v1/types/enums/audit-log-actor-type.mdx
@@ -0,0 +1,84 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: audit-log-actor-type
+title: AuditLogActorType
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+The type of actor that performed an action.
+
+
+```graphql
+enum AuditLogActorType {
+ ACCOUNT
+ SERVICE_ACCOUNT
+ DEPLOYMENT
+ SYSTEM
+}
+```
+
+
+
+
+### Values
+
+#### [AuditLogActorType.ACCOUNT](#account) \{#account\}
+Human user account
+
+
+#### [AuditLogActorType.SERVICE_ACCOUNT](#service-account) \{#service-account\}
+Service account (API key)
+
+
+#### [AuditLogActorType.DEPLOYMENT](#deployment) \{#deployment\}
+Automated deployment
+
+
+#### [AuditLogActorType.SYSTEM](#system) \{#system\}
+System action or legacy event
+
+
+
+
+
+
+### Member Of
+
+[`AuditLogActorTypeFilter`](/api/graphql/v1/types/inputs/audit-log-actor-type-filter.mdx) [`V1AuditLogActor`](/api/graphql/v1/types/objects/v1-audit-log-actor.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/enums/audit-logs-sort-field.mdx b/docs/api/graphql/v1/types/enums/audit-logs-sort-field.mdx
new file mode 100644
index 0000000..cd49b92
--- /dev/null
+++ b/docs/api/graphql/v1/types/enums/audit-logs-sort-field.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: audit-logs-sort-field
+title: AuditLogsSortField
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Available fields for sorting audit logs.
+
+
+```graphql
+enum AuditLogsSortField {
+ OCCURRED_AT
+ TYPE
+}
+```
+
+
+
+
+### Values
+
+#### [AuditLogsSortField.OCCURRED_AT](#occurred-at) \{#occurred-at\}
+Sort by when the event occurred
+
+
+#### [AuditLogsSortField.TYPE](#type) \{#type\}
+Sort by event type
+
+
+
+
+
+
+### Member Of
+
+[`AuditLogsSort`](/api/graphql/v1/types/inputs/audit-logs-sort.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/enums/group-role.mdx b/docs/api/graphql/v1/types/enums/group-role.mdx
new file mode 100644
index 0000000..c53f0a6
--- /dev/null
+++ b/docs/api/graphql/v1/types/enums/group-role.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: group-role
+title: GroupRole
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+The role of a group within an organization.
+
+
+```graphql
+enum GroupRole {
+ ORGANIZATION_ADMIN
+ ORGANIZATION_VIEWER
+ CUSTOM
+}
+```
+
+
+
+
+### Values
+
+#### [GroupRole.ORGANIZATION_ADMIN](#organization-admin) \{#organization-admin\}
+Full administrative access to the organization
+
+
+#### [GroupRole.ORGANIZATION_VIEWER](#organization-viewer) \{#organization-viewer\}
+Read-only access to the organization
+
+
+#### [GroupRole.CUSTOM](#custom) \{#custom\}
+Custom role with project-level access grants
+
+
+
+
+
+
+### Member Of
+
+[`Group`](/api/graphql/v1/types/objects/group.mdx) [`GroupLeaf`](/api/graphql/v1/types/objects/group-leaf.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/enums/groups-sort-field.mdx b/docs/api/graphql/v1/types/enums/groups-sort-field.mdx
new file mode 100644
index 0000000..368724f
--- /dev/null
+++ b/docs/api/graphql/v1/types/enums/groups-sort-field.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: groups-sort-field
+title: GroupsSortField
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Available fields for sorting groups.
+
+
+```graphql
+enum GroupsSortField {
+ NAME
+ CREATED_AT
+}
+```
+
+
+
+
+### Values
+
+#### [GroupsSortField.NAME](#name) \{#name\}
+Sort alphabetically by group name
+
+
+#### [GroupsSortField.CREATED_AT](#created-at) \{#created-at\}
+Sort by when the group was created
+
+
+
+
+
+
+### Member Of
+
+[`GroupsSort`](/api/graphql/v1/types/inputs/groups-sort.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/enums/integration-status.mdx b/docs/api/graphql/v1/types/enums/integration-status.mdx
new file mode 100644
index 0000000..b52d473
--- /dev/null
+++ b/docs/api/graphql/v1/types/enums/integration-status.mdx
@@ -0,0 +1,84 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration-status
+title: IntegrationStatus
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+The current status of an integration.
+
+
+```graphql
+enum IntegrationStatus {
+ DISABLED
+ DISABLING
+ ENABLING
+ ENABLED
+}
+```
+
+
+
+
+### Values
+
+#### [IntegrationStatus.DISABLED](#disabled) \{#disabled\}
+Integration is inactive
+
+
+#### [IntegrationStatus.DISABLING](#disabling) \{#disabling\}
+Integration is being deactivated
+
+
+#### [IntegrationStatus.ENABLING](#enabling) \{#enabling\}
+Integration is being activated
+
+
+#### [IntegrationStatus.ENABLED](#enabled) \{#enabled\}
+Integration is active and running
+
+
+
+
+
+
+### Member Of
+
+[`Integration`](/api/graphql/v1/types/objects/integration.mdx) [`IntegrationActivation`](/api/graphql/v1/types/objects/integration-activation.mdx) [`IntegrationLeaf`](/api/graphql/v1/types/objects/integration-leaf.mdx) [`IntegrationStatusFilter`](/api/graphql/v1/types/inputs/integration-status-filter.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/enums/integrations-sort-field.mdx b/docs/api/graphql/v1/types/enums/integrations-sort-field.mdx
new file mode 100644
index 0000000..6947be9
--- /dev/null
+++ b/docs/api/graphql/v1/types/enums/integrations-sort-field.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integrations-sort-field
+title: IntegrationsSortField
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Available fields for sorting integrations.
+
+
+```graphql
+enum IntegrationsSortField {
+ CREATED_AT
+ ID
+}
+```
+
+
+
+
+### Values
+
+#### [IntegrationsSortField.CREATED_AT](#created-at) \{#created-at\}
+Sort by when the integration was created
+
+
+#### [IntegrationsSortField.ID](#id) \{#id\}
+Sort alphabetically by integration type
+
+
+
+
+
+
+### Member Of
+
+[`IntegrationsSort`](/api/graphql/v1/types/inputs/integrations-sort.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/enums/organization-tag-constraints-sort-field.mdx b/docs/api/graphql/v1/types/enums/organization-tag-constraints-sort-field.mdx
new file mode 100644
index 0000000..d94e855
--- /dev/null
+++ b/docs/api/graphql/v1/types/enums/organization-tag-constraints-sort-field.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: organization-tag-constraints-sort-field
+title: OrganizationTagConstraintsSortField
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Available fields for sorting tag constraints.
+
+
+```graphql
+enum OrganizationTagConstraintsSortField {
+ KEY
+ SCOPE
+ CREATED_AT
+}
+```
+
+
+
+
+### Values
+
+#### [OrganizationTagConstraintsSortField.KEY](#key) \{#key\}
+Sort alphabetically by tag key
+
+
+#### [OrganizationTagConstraintsSortField.SCOPE](#scope) \{#scope\}
+Sort by resource scope level
+
+
+#### [OrganizationTagConstraintsSortField.CREATED_AT](#created-at) \{#created-at\}
+Sort by when the constraint was created
+
+
+
+
+
+
+### Member Of
+
+[`OrganizationTagConstraintsSort`](/api/graphql/v1/types/inputs/organization-tag-constraints-sort.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/enums/sort-order.mdx b/docs/api/graphql/v1/types/enums/sort-order.mdx
index 2fc1486..04f7791 100644
--- a/docs/api/graphql/v1/types/enums/sort-order.mdx
+++ b/docs/api/graphql/v1/types/enums/sort-order.mdx
@@ -71,4 +71,4 @@ Descending order (Z→A, newest→oldest)
### Member Of
-[`ComponentsSort`](/api/graphql/v1/types/inputs/components-sort.mdx) [`DeploymentsSort`](/api/graphql/v1/types/inputs/deployments-sort.mdx) [`EnvironmentsSort`](/api/graphql/v1/types/inputs/environments-sort.mdx) [`IdentitiesSort`](/api/graphql/v1/types/inputs/identities-sort.mdx) [`InstancesSort`](/api/graphql/v1/types/inputs/instances-sort.mdx) [`InvitesSort`](/api/graphql/v1/types/inputs/invites-sort.mdx) [`LinksSort`](/api/graphql/v1/types/inputs/links-sort.mdx) [`ParamDimensionsSort`](/api/graphql/v1/types/inputs/param-dimensions-sort.mdx) [`ProjectsSort`](/api/graphql/v1/types/inputs/projects-sort.mdx) [`ViewerOrganizationsSort`](/api/graphql/v1/types/inputs/viewer-organizations-sort.mdx)
\ No newline at end of file
+[`AuditLogsSort`](/api/graphql/v1/types/inputs/audit-logs-sort.mdx) [`ComponentsSort`](/api/graphql/v1/types/inputs/components-sort.mdx) [`DeploymentsSort`](/api/graphql/v1/types/inputs/deployments-sort.mdx) [`EnvironmentsSort`](/api/graphql/v1/types/inputs/environments-sort.mdx) [`GroupsSort`](/api/graphql/v1/types/inputs/groups-sort.mdx) [`IdentitiesSort`](/api/graphql/v1/types/inputs/identities-sort.mdx) [`InstancesSort`](/api/graphql/v1/types/inputs/instances-sort.mdx) [`IntegrationsSort`](/api/graphql/v1/types/inputs/integrations-sort.mdx) [`InvitesSort`](/api/graphql/v1/types/inputs/invites-sort.mdx) [`LinksSort`](/api/graphql/v1/types/inputs/links-sort.mdx) [`OrganizationTagConstraintsSort`](/api/graphql/v1/types/inputs/organization-tag-constraints-sort.mdx) [`ParamDimensionsSort`](/api/graphql/v1/types/inputs/param-dimensions-sort.mdx) [`ProjectsSort`](/api/graphql/v1/types/inputs/projects-sort.mdx) [`ViewerOrganizationsSort`](/api/graphql/v1/types/inputs/viewer-organizations-sort.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/enums/tag-constraint-scope.mdx b/docs/api/graphql/v1/types/enums/tag-constraint-scope.mdx
new file mode 100644
index 0000000..3657c31
--- /dev/null
+++ b/docs/api/graphql/v1/types/enums/tag-constraint-scope.mdx
@@ -0,0 +1,89 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: tag-constraint-scope
+title: TagConstraintScope
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+The resource level where a tag constraint applies.
+
+
+```graphql
+enum TagConstraintScope {
+ ORGANIZATION
+ PROJECT
+ ENVIRONMENT
+ COMPONENT
+ INSTANCE
+}
+```
+
+
+
+
+### Values
+
+#### [TagConstraintScope.ORGANIZATION](#organization) \{#organization\}
+Tag is set on the organization
+
+
+#### [TagConstraintScope.PROJECT](#project) \{#project\}
+Tag is set on projects
+
+
+#### [TagConstraintScope.ENVIRONMENT](#environment) \{#environment\}
+Tag is set on environments
+
+
+#### [TagConstraintScope.COMPONENT](#component) \{#component\}
+Tag is set on components
+
+
+#### [TagConstraintScope.INSTANCE](#instance) \{#instance\}
+Tag is set on instances
+
+
+
+
+
+
+### Member Of
+
+[`CreateOrganizationTagConstraintInput`](/api/graphql/v1/types/inputs/create-organization-tag-constraint-input.mdx) [`OrganizationTagConstraint`](/api/graphql/v1/types/objects/organization-tag-constraint.mdx) [`OrganizationTagConstraintLeaf`](/api/graphql/v1/types/objects/organization-tag-constraint-leaf.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/add-component-input.mdx b/docs/api/graphql/v1/types/inputs/add-component-input.mdx
index 707abee..0b2dbad 100644
--- a/docs/api/graphql/v1/types/inputs/add-component-input.mdx
+++ b/docs/api/graphql/v1/types/inputs/add-component-input.mdx
@@ -51,6 +51,7 @@ input AddComponentInput {
id: String!
name: String!
ociRepoName: OciRepoName!
+ tags: Map
}
```
@@ -75,6 +76,10 @@ Display name for this component (e.g., 'Billing Database')
Name of the OCI repository for the bundle to add (e.g., 'aws-aurora-postgres')
+#### [AddComponentInput.tags](#tags)[Map](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Key-value tags for this component. Keys and values must be strings. Must conform to the organization's tag constraints for the component scope.
+
+
diff --git a/docs/api/graphql/v1/types/inputs/audit-log-actor-type-filter.mdx b/docs/api/graphql/v1/types/inputs/audit-log-actor-type-filter.mdx
new file mode 100644
index 0000000..c34c376
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/audit-log-actor-type-filter.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: audit-log-actor-type-filter
+title: AuditLogActorTypeFilter
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Filter by the type of actor that performed the action.
+
+
+```graphql
+input AuditLogActorTypeFilter {
+ eq: AuditLogActorType
+ in: [AuditLogActorType!]
+}
+```
+
+
+
+
+### Fields
+
+#### [AuditLogActorTypeFilter.eq](#eq)[AuditLogActorType](/api/graphql/v1/types/enums/audit-log-actor-type.mdx) \{#eq\}
+Exact match
+
+
+#### [AuditLogActorTypeFilter.in](#in)[[AuditLogActorType!]](/api/graphql/v1/types/enums/audit-log-actor-type.mdx) \{#in\}
+Match any of these actor types
+
+
+
+
+
+
+### Member Of
+
+[`AuditLogsFilter`](/api/graphql/v1/types/inputs/audit-logs-filter.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/audit-logs-filter.mdx b/docs/api/graphql/v1/types/inputs/audit-logs-filter.mdx
new file mode 100644
index 0000000..8c0baa4
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/audit-logs-filter.mdx
@@ -0,0 +1,84 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: audit-logs-filter
+title: AuditLogsFilter
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Filter which audit logs to return.
+
+
+```graphql
+input AuditLogsFilter {
+ occurredAt: DatetimeFilter
+ type: StringFilter
+ actorType: AuditLogActorTypeFilter
+ actorId: IdFilter
+}
+```
+
+
+
+
+### Fields
+
+#### [AuditLogsFilter.occurredAt](#occurred-at)[DatetimeFilter](/api/graphql/v1/types/inputs/datetime-filter.mdx) \{#occurred-at\}
+Filter by when the event occurred
+
+
+#### [AuditLogsFilter.type](#type)[StringFilter](/api/graphql/v1/types/inputs/string-filter.mdx) \{#type\}
+Filter by event type (e.g., 'project.created')
+
+
+#### [AuditLogsFilter.actorType](#actor-type)[AuditLogActorTypeFilter](/api/graphql/v1/types/inputs/audit-log-actor-type-filter.mdx) \{#actor-type\}
+Filter by who performed the action
+
+
+#### [AuditLogsFilter.actorId](#actor-id)[IdFilter](/api/graphql/v1/types/inputs/id-filter.mdx) \{#actor-id\}
+Filter by the actor's ID
+
+
+
+
+
+
+### Member Of
+
+[`auditLogs`](/api/graphql/v1/operations/queries/audit-logs.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/audit-logs-sort.mdx b/docs/api/graphql/v1/types/inputs/audit-logs-sort.mdx
new file mode 100644
index 0000000..51807ce
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/audit-logs-sort.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: audit-logs-sort
+title: AuditLogsSort
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Sorting options for the audit logs list.
+
+
+```graphql
+input AuditLogsSort {
+ field: AuditLogsSortField!
+ order: SortOrder!
+}
+```
+
+
+
+
+### Fields
+
+#### [AuditLogsSort.field](#field)[AuditLogsSortField!](/api/graphql/v1/types/enums/audit-logs-sort-field.mdx) \{#field\}
+Which field to sort by
+
+
+#### [AuditLogsSort.order](#order)[SortOrder!](/api/graphql/v1/types/enums/sort-order.mdx) \{#order\}
+Sort direction
+
+
+
+
+
+
+### Member Of
+
+[`auditLogs`](/api/graphql/v1/operations/queries/audit-logs.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/create-access-token-input.mdx b/docs/api/graphql/v1/types/inputs/create-access-token-input.mdx
new file mode 100644
index 0000000..803909e
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/create-access-token-input.mdx
@@ -0,0 +1,84 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-access-token-input
+title: CreateAccessTokenInput
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Create a scoped, time-limited access token for API authentication.
+
+
+```graphql
+input CreateAccessTokenInput {
+ expiresInMinutes: Int
+ name: String!
+ scopes: [String!]!
+ serviceAccountId: String
+}
+```
+
+
+
+
+### Fields
+
+#### [CreateAccessTokenInput.expiresInMinutes](#expires-in-minutes)[Int](/api/graphql/v1/types/scalars/int.mdx) \{#expires-in-minutes\}
+How many minutes until this token expires. Defaults to 60 (1 hour). Maximum ~5,256,000 (10 years).
+
+
+#### [CreateAccessTokenInput.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+A label to identify this token (e.g., 'CI deploy key')
+
+
+#### [CreateAccessTokenInput.scopes](#scopes)[[String!]!](/api/graphql/v1/types/scalars/string.mdx) \{#scopes\}
+Permission scopes. At least one required. Currently only ["*"] (full access) is supported.
+
+
+#### [CreateAccessTokenInput.serviceAccountId](#service-account-id)[String](/api/graphql/v1/types/scalars/string.mdx) \{#service-account-id\}
+Create the token on behalf of this service account. Omit to create for the authenticated identity.
+
+
+
+
+
+
+### Member Of
+
+[`createAccessToken`](/api/graphql/v1/operations/mutations/create-access-token.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/create-environment-input.mdx b/docs/api/graphql/v1/types/inputs/create-environment-input.mdx
index f532789..440fddd 100644
--- a/docs/api/graphql/v1/types/inputs/create-environment-input.mdx
+++ b/docs/api/graphql/v1/types/inputs/create-environment-input.mdx
@@ -50,6 +50,7 @@ input CreateEnvironmentInput {
description: String
id: String!
name: String!
+ tags: Map
}
```
@@ -70,6 +71,10 @@ A short, memorable identifier for looking up this environment in the API and CLI
A human-readable name for the environment
+#### [CreateEnvironmentInput.tags](#tags)[Map](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Key-value tags for this environment. Keys and values must be strings. Must conform to the organization's tag constraints for the environment scope.
+
+
diff --git a/docs/api/graphql/v1/types/inputs/create-group-input.mdx b/docs/api/graphql/v1/types/inputs/create-group-input.mdx
new file mode 100644
index 0000000..e0ef38c
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/create-group-input.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-group-input
+title: CreateGroupInput
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Create a new group. Groups control which projects members can access.
+
+
+```graphql
+input CreateGroupInput {
+ description: String
+ name: String!
+}
+```
+
+
+
+
+### Fields
+
+#### [CreateGroupInput.description](#description)[String](/api/graphql/v1/types/scalars/string.mdx) \{#description\}
+What this group is for
+
+
+#### [CreateGroupInput.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+A human-readable name for the group
+
+
+
+
+
+
+### Member Of
+
+[`createGroup`](/api/graphql/v1/operations/mutations/create-group.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/create-integration-input.mdx b/docs/api/graphql/v1/types/inputs/create-integration-input.mdx
new file mode 100644
index 0000000..dfde6be
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/create-integration-input.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-integration-input
+title: CreateIntegrationInput
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Create and activate an integration for your organization. The config and auth payloads must conform to the integration type's configSchema and authSchema respectively.
+
+
+```graphql
+input CreateIntegrationInput {
+ auth: Map!
+ config: Map!
+}
+```
+
+
+
+
+### Fields
+
+#### [CreateIntegrationInput.auth](#auth)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#auth\}
+Authentication credentials. Must conform to the integration type's authSchema. Write-only — not returned in queries.
+
+
+#### [CreateIntegrationInput.config](#config)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#config\}
+Integration-specific configuration. Must conform to the integration type's configSchema.
+
+
+
+
+
+
+### Member Of
+
+[`createIntegration`](/api/graphql/v1/operations/mutations/create-integration.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/create-organization-tag-constraint-input.mdx b/docs/api/graphql/v1/types/inputs/create-organization-tag-constraint-input.mdx
new file mode 100644
index 0000000..1c88b69
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/create-organization-tag-constraint-input.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-organization-tag-constraint-input
+title: CreateOrganizationTagConstraintInput
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Define a structural tag constraint for your organization. Tag constraints control which tags can be set on resources at each level of the hierarchy.
+
+
+```graphql
+input CreateOrganizationTagConstraintInput {
+ key: String!
+ required: Boolean
+ scope: TagConstraintScope!
+}
+```
+
+
+
+
+### Fields
+
+#### [CreateOrganizationTagConstraintInput.key](#key)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#key\}
+The tag key name. Must start with a letter. Keys starting with MD_ are reserved.
+
+
+#### [CreateOrganizationTagConstraintInput.required](#required)[Boolean](/api/graphql/v1/types/scalars/boolean.mdx) \{#required\}
+Whether this tag must be set when creating a resource at the specified scope.
+
+
+#### [CreateOrganizationTagConstraintInput.scope](#scope)[TagConstraintScope!](/api/graphql/v1/types/enums/tag-constraint-scope.mdx) \{#scope\}
+The resource level where this tag is set. Values cascade to child resources.
+
+
+
+
+
+
+### Member Of
+
+[`createOrganizationTagConstraint`](/api/graphql/v1/operations/mutations/create-organization-tag-constraint.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/create-project-input.mdx b/docs/api/graphql/v1/types/inputs/create-project-input.mdx
index 49af67e..7eea4cb 100644
--- a/docs/api/graphql/v1/types/inputs/create-project-input.mdx
+++ b/docs/api/graphql/v1/types/inputs/create-project-input.mdx
@@ -50,6 +50,7 @@ input CreateProjectInput {
description: String
id: String!
name: String!
+ tags: Map
}
```
@@ -70,6 +71,10 @@ A short, memorable identifier for looking up this project in the API and CLI. Th
A human-readable name for the project
+#### [CreateProjectInput.tags](#tags)[Map](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Key-value tags for this project. Keys and values must be strings. Must conform to the organization's tag constraints for the project scope.
+
+
diff --git a/docs/api/graphql/v1/types/inputs/create-service-account-input.mdx b/docs/api/graphql/v1/types/inputs/create-service-account-input.mdx
new file mode 100644
index 0000000..1dcd318
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/create-service-account-input.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: create-service-account-input
+title: CreateServiceAccountInput
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Create a new service account for programmatic API access.
+
+
+```graphql
+input CreateServiceAccountInput {
+ description: String
+ name: String!
+}
+```
+
+
+
+
+### Fields
+
+#### [CreateServiceAccountInput.description](#description)[String](/api/graphql/v1/types/scalars/string.mdx) \{#description\}
+What this service account is used for
+
+
+#### [CreateServiceAccountInput.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+A human-readable name for the service account
+
+
+
+
+
+
+### Member Of
+
+[`createServiceAccount`](/api/graphql/v1/operations/mutations/create-service-account.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/cursor.mdx b/docs/api/graphql/v1/types/inputs/cursor.mdx
index 0c8a2ec..174a2ee 100644
--- a/docs/api/graphql/v1/types/inputs/cursor.mdx
+++ b/docs/api/graphql/v1/types/inputs/cursor.mdx
@@ -76,4 +76,4 @@ Cursor before which to return items
### Member Of
-[`deployments`](/api/graphql/v1/operations/queries/deployments.mdx) [`environments`](/api/graphql/v1/operations/queries/environments.mdx) [`instances`](/api/graphql/v1/operations/queries/instances.mdx) [`paramDimensions`](/api/graphql/v1/operations/queries/param-dimensions.mdx) [`projects`](/api/graphql/v1/operations/queries/projects.mdx)
\ No newline at end of file
+[`auditLogs`](/api/graphql/v1/operations/queries/audit-logs.mdx) [`deployments`](/api/graphql/v1/operations/queries/deployments.mdx) [`environments`](/api/graphql/v1/operations/queries/environments.mdx) [`groups`](/api/graphql/v1/operations/queries/groups.mdx) [`instances`](/api/graphql/v1/operations/queries/instances.mdx) [`integrations`](/api/graphql/v1/operations/queries/integrations.mdx) [`paramDimensions`](/api/graphql/v1/operations/queries/param-dimensions.mdx) [`projects`](/api/graphql/v1/operations/queries/projects.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/datetime-filter.mdx b/docs/api/graphql/v1/types/inputs/datetime-filter.mdx
new file mode 100644
index 0000000..9fef1c1
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/datetime-filter.mdx
@@ -0,0 +1,90 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: datetime-filter
+title: DatetimeFilter
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Filter for datetime fields. All provided operators are combined with AND.
+Useful for date range queries.
+
+
+```graphql
+input DatetimeFilter {
+ eq: DateTime
+ gt: DateTime
+ gte: DateTime
+ lt: DateTime
+ lte: DateTime
+}
+```
+
+
+
+
+### Fields
+
+#### [DatetimeFilter.eq](#eq)[DateTime](/api/graphql/v1/types/scalars/date-time.mdx) \{#eq\}
+Exact match
+
+
+#### [DatetimeFilter.gt](#gt)[DateTime](/api/graphql/v1/types/scalars/date-time.mdx) \{#gt\}
+After this date/time
+
+
+#### [DatetimeFilter.gte](#gte)[DateTime](/api/graphql/v1/types/scalars/date-time.mdx) \{#gte\}
+On or after this date/time
+
+
+#### [DatetimeFilter.lt](#lt)[DateTime](/api/graphql/v1/types/scalars/date-time.mdx) \{#lt\}
+Before this date/time
+
+
+#### [DatetimeFilter.lte](#lte)[DateTime](/api/graphql/v1/types/scalars/date-time.mdx) \{#lte\}
+On or before this date/time
+
+
+
+
+
+
+### Member Of
+
+[`AuditLogsFilter`](/api/graphql/v1/types/inputs/audit-logs-filter.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/groups-sort.mdx b/docs/api/graphql/v1/types/inputs/groups-sort.mdx
new file mode 100644
index 0000000..53b3f00
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/groups-sort.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: groups-sort
+title: GroupsSort
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Sorting options for the groups list.
+
+
+```graphql
+input GroupsSort {
+ field: GroupsSortField!
+ order: SortOrder!
+}
+```
+
+
+
+
+### Fields
+
+#### [GroupsSort.field](#field)[GroupsSortField!](/api/graphql/v1/types/enums/groups-sort-field.mdx) \{#field\}
+Which field to sort by
+
+
+#### [GroupsSort.order](#order)[SortOrder!](/api/graphql/v1/types/enums/sort-order.mdx) \{#order\}
+Sort direction
+
+
+
+
+
+
+### Member Of
+
+[`groups`](/api/graphql/v1/operations/queries/groups.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/id-filter.mdx b/docs/api/graphql/v1/types/inputs/id-filter.mdx
index 4602f7c..e3f4d71 100644
--- a/docs/api/graphql/v1/types/inputs/id-filter.mdx
+++ b/docs/api/graphql/v1/types/inputs/id-filter.mdx
@@ -71,4 +71,4 @@ Match any of these values
### Member Of
-[`ComponentsFilter`](/api/graphql/v1/types/inputs/components-filter.mdx) [`DeploymentsFilter`](/api/graphql/v1/types/inputs/deployments-filter.mdx) [`EnvironmentsFilter`](/api/graphql/v1/types/inputs/environments-filter.mdx) [`InstancesFilter`](/api/graphql/v1/types/inputs/instances-filter.mdx) [`LinksFilter`](/api/graphql/v1/types/inputs/links-filter.mdx) [`ParamDimensionsFilter`](/api/graphql/v1/types/inputs/param-dimensions-filter.mdx)
\ No newline at end of file
+[`AuditLogsFilter`](/api/graphql/v1/types/inputs/audit-logs-filter.mdx) [`ComponentsFilter`](/api/graphql/v1/types/inputs/components-filter.mdx) [`DeploymentsFilter`](/api/graphql/v1/types/inputs/deployments-filter.mdx) [`EnvironmentsFilter`](/api/graphql/v1/types/inputs/environments-filter.mdx) [`InstancesFilter`](/api/graphql/v1/types/inputs/instances-filter.mdx) [`LinksFilter`](/api/graphql/v1/types/inputs/links-filter.mdx) [`ParamDimensionsFilter`](/api/graphql/v1/types/inputs/param-dimensions-filter.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/identities-sort.mdx b/docs/api/graphql/v1/types/inputs/identities-sort.mdx
index 66445ec..816baf4 100644
--- a/docs/api/graphql/v1/types/inputs/identities-sort.mdx
+++ b/docs/api/graphql/v1/types/inputs/identities-sort.mdx
@@ -42,7 +42,7 @@ export const Details = ({ dataOpen, dataClose, children, startOpen = false }) =>
-Sorting options for identities list.
+Sorting options for the identities list.
```graphql
diff --git a/docs/api/graphql/v1/types/inputs/integration-status-filter.mdx b/docs/api/graphql/v1/types/inputs/integration-status-filter.mdx
new file mode 100644
index 0000000..3677bee
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/integration-status-filter.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration-status-filter
+title: IntegrationStatusFilter
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Filter for integration status.
+
+
+```graphql
+input IntegrationStatusFilter {
+ eq: IntegrationStatus
+ in: [IntegrationStatus!]
+}
+```
+
+
+
+
+### Fields
+
+#### [IntegrationStatusFilter.eq](#eq)[IntegrationStatus](/api/graphql/v1/types/enums/integration-status.mdx) \{#eq\}
+Exact match
+
+
+#### [IntegrationStatusFilter.in](#in)[[IntegrationStatus!]](/api/graphql/v1/types/enums/integration-status.mdx) \{#in\}
+Match any of these statuses
+
+
+
+
+
+
+### Member Of
+
+[`IntegrationsFilter`](/api/graphql/v1/types/inputs/integrations-filter.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/integrations-filter.mdx b/docs/api/graphql/v1/types/inputs/integrations-filter.mdx
new file mode 100644
index 0000000..b0f9db3
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/integrations-filter.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integrations-filter
+title: IntegrationsFilter
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Filter options for the integrations list.
+
+
+```graphql
+input IntegrationsFilter {
+ id: StringFilter
+ status: IntegrationStatusFilter
+}
+```
+
+
+
+
+### Fields
+
+#### [IntegrationsFilter.id](#id)[StringFilter](/api/graphql/v1/types/inputs/string-filter.mdx) \{#id\}
+Filter by integration type ID
+
+
+#### [IntegrationsFilter.status](#status)[IntegrationStatusFilter](/api/graphql/v1/types/inputs/integration-status-filter.mdx) \{#status\}
+Filter by status
+
+
+
+
+
+
+### Member Of
+
+[`integrations`](/api/graphql/v1/operations/queries/integrations.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/integrations-sort.mdx b/docs/api/graphql/v1/types/inputs/integrations-sort.mdx
new file mode 100644
index 0000000..1d84ea4
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/integrations-sort.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integrations-sort
+title: IntegrationsSort
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Sorting options for the integrations list.
+
+
+```graphql
+input IntegrationsSort {
+ field: IntegrationsSortField!
+ order: SortOrder!
+}
+```
+
+
+
+
+### Fields
+
+#### [IntegrationsSort.field](#field)[IntegrationsSortField!](/api/graphql/v1/types/enums/integrations-sort-field.mdx) \{#field\}
+Which field to sort by
+
+
+#### [IntegrationsSort.order](#order)[SortOrder!](/api/graphql/v1/types/enums/sort-order.mdx) \{#order\}
+Sort direction
+
+
+
+
+
+
+### Member Of
+
+[`integrations`](/api/graphql/v1/operations/queries/integrations.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/invites-sort.mdx b/docs/api/graphql/v1/types/inputs/invites-sort.mdx
index 6efb08b..125026f 100644
--- a/docs/api/graphql/v1/types/inputs/invites-sort.mdx
+++ b/docs/api/graphql/v1/types/inputs/invites-sort.mdx
@@ -42,7 +42,7 @@ export const Details = ({ dataOpen, dataClose, children, startOpen = false }) =>
-Sorting options for invites list.
+Sorting options for the invites list.
```graphql
diff --git a/docs/api/graphql/v1/types/inputs/organization-tag-constraints-sort.mdx b/docs/api/graphql/v1/types/inputs/organization-tag-constraints-sort.mdx
new file mode 100644
index 0000000..0fac8be
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/organization-tag-constraints-sort.mdx
@@ -0,0 +1,65 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: organization-tag-constraints-sort
+title: OrganizationTagConstraintsSort
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Sorting options for the tag constraints list.
+
+
+```graphql
+input OrganizationTagConstraintsSort {
+ field: OrganizationTagConstraintsSortField!
+ order: SortOrder!
+}
+```
+
+
+
+
+### Fields
+
+#### [OrganizationTagConstraintsSort.field](#field)[OrganizationTagConstraintsSortField!](/api/graphql/v1/types/enums/organization-tag-constraints-sort-field.mdx) \{#field\}
+Which field to sort by
+
+
+#### [OrganizationTagConstraintsSort.order](#order)[SortOrder!](/api/graphql/v1/types/enums/sort-order.mdx) \{#order\}
+Sort direction
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/remove-remote-reference-input.mdx b/docs/api/graphql/v1/types/inputs/remove-remote-reference-input.mdx
new file mode 100644
index 0000000..c29d3c6
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/remove-remote-reference-input.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: remove-remote-reference-input
+title: RemoveRemoteReferenceInput
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Remove a remote reference from an instance. The reference can only be removed if no provisioned instances are connected through it.
+
+
+```graphql
+input RemoveRemoteReferenceInput {
+ field: String!
+ instanceId: ID!
+}
+```
+
+
+
+
+### Fields
+
+#### [RemoveRemoteReferenceInput.field](#field)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#field\}
+The resource field to remove the reference from
+
+
+#### [RemoveRemoteReferenceInput.instanceId](#instance-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#instance-id\}
+The instance the reference belongs to
+
+
+
+
+
+
+### Member Of
+
+[`removeRemoteReference`](/api/graphql/v1/operations/mutations/remove-remote-reference.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/set-component-position-input.mdx b/docs/api/graphql/v1/types/inputs/set-component-position-input.mdx
new file mode 100644
index 0000000..0a41299
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/set-component-position-input.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: set-component-position-input
+title: SetComponentPositionInput
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Set the position of a component on the canvas.
+
+
+```graphql
+input SetComponentPositionInput {
+ x: Int!
+ y: Int!
+}
+```
+
+
+
+
+### Fields
+
+#### [SetComponentPositionInput.x](#x)[Int!](/api/graphql/v1/types/scalars/int.mdx) \{#x\}
+Horizontal position in pixels
+
+
+#### [SetComponentPositionInput.y](#y)[Int!](/api/graphql/v1/types/scalars/int.mdx) \{#y\}
+Vertical position in pixels
+
+
+
+
+
+
+### Member Of
+
+[`setComponentPosition`](/api/graphql/v1/operations/mutations/set-component-position.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/set-remote-reference-input.mdx b/docs/api/graphql/v1/types/inputs/set-remote-reference-input.mdx
new file mode 100644
index 0000000..e49d7fd
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/set-remote-reference-input.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: set-remote-reference-input
+title: SetRemoteReferenceInput
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Link an instance's resource field to a resource from another project or an imported resource. The instance must not be in a provisioned or failed state.
+
+
+```graphql
+input SetRemoteReferenceInput {
+ field: String!
+ instanceId: ID!
+ resourceId: ID!
+}
+```
+
+
+
+
+### Fields
+
+#### [SetRemoteReferenceInput.field](#field)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#field\}
+The resource field to assign the reference to
+
+
+#### [SetRemoteReferenceInput.instanceId](#instance-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#instance-id\}
+The instance to set the remote reference on
+
+
+#### [SetRemoteReferenceInput.resourceId](#resource-id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#resource-id\}
+The resource to reference — either a UUID for imported resources or 'instance.field' for provisioned resources
+
+
+
+
+
+
+### Member Of
+
+[`setRemoteReference`](/api/graphql/v1/operations/mutations/set-remote-reference.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/string-filter.mdx b/docs/api/graphql/v1/types/inputs/string-filter.mdx
index c05adf7..51576a9 100644
--- a/docs/api/graphql/v1/types/inputs/string-filter.mdx
+++ b/docs/api/graphql/v1/types/inputs/string-filter.mdx
@@ -71,4 +71,4 @@ Match any of these values
### Member Of
-[`EnvironmentsFilter`](/api/graphql/v1/types/inputs/environments-filter.mdx)
\ No newline at end of file
+[`AuditLogsFilter`](/api/graphql/v1/types/inputs/audit-logs-filter.mdx) [`EnvironmentsFilter`](/api/graphql/v1/types/inputs/environments-filter.mdx) [`IntegrationsFilter`](/api/graphql/v1/types/inputs/integrations-filter.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/update-environment-input.mdx b/docs/api/graphql/v1/types/inputs/update-environment-input.mdx
index 448604f..edaa6f6 100644
--- a/docs/api/graphql/v1/types/inputs/update-environment-input.mdx
+++ b/docs/api/graphql/v1/types/inputs/update-environment-input.mdx
@@ -49,6 +49,7 @@ Update an existing environment's name and description. The ID cannot be changed
input UpdateEnvironmentInput {
description: String
name: String
+ tags: Map
}
```
@@ -65,6 +66,10 @@ An optional description of the environment's purpose
A human-readable name for the environment
+#### [UpdateEnvironmentInput.tags](#tags)[Map](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Key-value tags for this environment. Keys and values must be strings. Must conform to the organization's tag constraints for the environment scope.
+
+
diff --git a/docs/api/graphql/v1/types/inputs/update-group-input.mdx b/docs/api/graphql/v1/types/inputs/update-group-input.mdx
new file mode 100644
index 0000000..d40163e
--- /dev/null
+++ b/docs/api/graphql/v1/types/inputs/update-group-input.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: update-group-input
+title: UpdateGroupInput
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+Update a group's name or description.
+
+
+```graphql
+input UpdateGroupInput {
+ description: String
+ name: String!
+}
+```
+
+
+
+
+### Fields
+
+#### [UpdateGroupInput.description](#description)[String](/api/graphql/v1/types/scalars/string.mdx) \{#description\}
+What this group is for
+
+
+#### [UpdateGroupInput.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+A human-readable name for the group
+
+
+
+
+
+
+### Member Of
+
+[`updateGroup`](/api/graphql/v1/operations/mutations/update-group.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/inputs/update-project-input.mdx b/docs/api/graphql/v1/types/inputs/update-project-input.mdx
index d98f210..93ae5a6 100644
--- a/docs/api/graphql/v1/types/inputs/update-project-input.mdx
+++ b/docs/api/graphql/v1/types/inputs/update-project-input.mdx
@@ -49,6 +49,7 @@ Update an existing project's name and description. The ID cannot be changed afte
input UpdateProjectInput {
description: String
name: String
+ tags: Map
}
```
@@ -65,6 +66,10 @@ An optional description of the project's purpose or contents
A human-readable name for the project
+#### [UpdateProjectInput.tags](#tags)[Map](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Key-value tags for this project. Keys and values must be strings. Must conform to the organization's tag constraints for the project scope.
+
+
diff --git a/docs/api/graphql/v1/types/objects/access-token-payload.mdx b/docs/api/graphql/v1/types/objects/access-token-payload.mdx
new file mode 100644
index 0000000..27cef5e
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/access-token-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: access-token-payload
+title: AccessTokenPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type AccessTokenPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: AccessToken
+}
+```
+
+
+
+
+### Fields
+
+#### [AccessTokenPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [AccessTokenPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [AccessTokenPayload.result](#result)[AccessToken](/api/graphql/v1/types/objects/access-token.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`revokeAccessToken`](/api/graphql/v1/operations/mutations/revoke-access-token.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/access-token-with-value-payload.mdx b/docs/api/graphql/v1/types/objects/access-token-with-value-payload.mdx
new file mode 100644
index 0000000..60b6cb1
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/access-token-with-value-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: access-token-with-value-payload
+title: AccessTokenWithValuePayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type AccessTokenWithValuePayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: AccessTokenWithValue
+}
+```
+
+
+
+
+### Fields
+
+#### [AccessTokenWithValuePayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [AccessTokenWithValuePayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [AccessTokenWithValuePayload.result](#result)[AccessTokenWithValue](/api/graphql/v1/types/objects/access-token-with-value.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`createAccessToken`](/api/graphql/v1/operations/mutations/create-access-token.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/access-token-with-value.mdx b/docs/api/graphql/v1/types/objects/access-token-with-value.mdx
new file mode 100644
index 0000000..d8afb02
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/access-token-with-value.mdx
@@ -0,0 +1,99 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: access-token-with-value
+title: AccessTokenWithValue
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+An access token with the raw token value. Only returned on creation.
+
+
+```graphql
+type AccessTokenWithValue {
+ id: ID!
+ name: String!
+ token: String!
+ prefix: String!
+ scopes: [String!]!
+ expiresAt: DateTime!
+ createdAt: DateTime!
+}
+```
+
+
+
+
+### Fields
+
+#### [AccessTokenWithValue.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Access token identifier
+
+
+#### [AccessTokenWithValue.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+Label for this token
+
+
+#### [AccessTokenWithValue.token](#token)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#token\}
+The full token value. Store securely — this is the only time it is shown.
+
+
+#### [AccessTokenWithValue.prefix](#prefix)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#prefix\}
+Short prefix for identifying this token in lists (e.g., md_a1b2c3d4)
+
+
+#### [AccessTokenWithValue.scopes](#scopes)[[String!]!](/api/graphql/v1/types/scalars/string.mdx) \{#scopes\}
+Permission scopes granted to this token
+
+
+#### [AccessTokenWithValue.expiresAt](#expires-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#expires-at\}
+When this token expires (UTC)
+
+
+#### [AccessTokenWithValue.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this token was created (UTC)
+
+
+
+
+
+
+### Member Of
+
+[`AccessTokenWithValuePayload`](/api/graphql/v1/types/objects/access-token-with-value-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/access-token.mdx b/docs/api/graphql/v1/types/objects/access-token.mdx
new file mode 100644
index 0000000..b8e9b65
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/access-token.mdx
@@ -0,0 +1,104 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: access-token
+title: AccessToken
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+An access token's metadata. Does not include the raw token value.
+
+
+```graphql
+type AccessToken {
+ id: ID!
+ name: String!
+ prefix: String!
+ scopes: [String!]!
+ expiresAt: DateTime!
+ revokedAt: DateTime
+ lastUsedAt: DateTime
+ createdAt: DateTime!
+}
+```
+
+
+
+
+### Fields
+
+#### [AccessToken.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Access token identifier
+
+
+#### [AccessToken.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+Label for this token
+
+
+#### [AccessToken.prefix](#prefix)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#prefix\}
+Short prefix for identifying this token (e.g., md_a1b2c3d4)
+
+
+#### [AccessToken.scopes](#scopes)[[String!]!](/api/graphql/v1/types/scalars/string.mdx) \{#scopes\}
+Permission scopes granted to this token
+
+
+#### [AccessToken.expiresAt](#expires-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#expires-at\}
+When this token expires (UTC)
+
+
+#### [AccessToken.revokedAt](#revoked-at)[DateTime](/api/graphql/v1/types/scalars/date-time.mdx) \{#revoked-at\}
+When this token was revoked, if applicable (UTC)
+
+
+#### [AccessToken.lastUsedAt](#last-used-at)[DateTime](/api/graphql/v1/types/scalars/date-time.mdx) \{#last-used-at\}
+When this token was last used for authentication (UTC)
+
+
+#### [AccessToken.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this token was created (UTC)
+
+
+
+
+
+
+### Member Of
+
+[`AccessTokenPayload`](/api/graphql/v1/types/objects/access-token-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/audit-log-leaf.mdx b/docs/api/graphql/v1/types/objects/audit-log-leaf.mdx
new file mode 100644
index 0000000..5b43487
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/audit-log-leaf.mdx
@@ -0,0 +1,99 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: audit-log-leaf
+title: AuditLogLeaf
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+An audit log event returned in list results.
+
+
+```graphql
+type AuditLogLeaf {
+ id: ID!
+ occurredAt: DateTime!
+ type: String!
+ source: String!
+ subject: String
+ data: Map
+ actor: V1AuditLogActor!
+}
+```
+
+
+
+
+### Fields
+
+#### [AuditLogLeaf.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Unique event identifier
+
+
+#### [AuditLogLeaf.occurredAt](#occurred-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#occurred-at\}
+When the event occurred (UTC)
+
+
+#### [AuditLogLeaf.type](#type)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#type\}
+Event type (e.g., 'project.created')
+
+
+#### [AuditLogLeaf.source](#source)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#source\}
+Where the event originated
+
+
+#### [AuditLogLeaf.subject](#subject)[String](/api/graphql/v1/types/scalars/string.mdx) \{#subject\}
+Resource the event applies to (MRI format)
+
+
+#### [AuditLogLeaf.data](#data)[Map](/api/graphql/v1/types/scalars/map.mdx) \{#data\}
+Event payload with context and resource details
+
+
+#### [AuditLogLeaf.actor](#actor)[V1AuditLogActor!](/api/graphql/v1/types/objects/v1-audit-log-actor.mdx) \{#actor\}
+Who performed this action
+
+
+
+
+
+
+### Member Of
+
+[`AuditLogsPage`](/api/graphql/v1/types/objects/audit-logs-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/audit-log.mdx b/docs/api/graphql/v1/types/objects/audit-log.mdx
new file mode 100644
index 0000000..9c46e2c
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/audit-log.mdx
@@ -0,0 +1,99 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: audit-log
+title: AuditLog
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+An audit log event with full details.
+
+
+```graphql
+type AuditLog {
+ id: ID!
+ occurredAt: DateTime!
+ type: String!
+ source: String!
+ subject: String
+ data: Map
+ actor: V1AuditLogActor!
+}
+```
+
+
+
+
+### Fields
+
+#### [AuditLog.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Unique event identifier
+
+
+#### [AuditLog.occurredAt](#occurred-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#occurred-at\}
+When the event occurred (UTC)
+
+
+#### [AuditLog.type](#type)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#type\}
+Event type (e.g., 'project.created')
+
+
+#### [AuditLog.source](#source)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#source\}
+Where the event originated
+
+
+#### [AuditLog.subject](#subject)[String](/api/graphql/v1/types/scalars/string.mdx) \{#subject\}
+Resource the event applies to (MRI format)
+
+
+#### [AuditLog.data](#data)[Map](/api/graphql/v1/types/scalars/map.mdx) \{#data\}
+Event payload with context and resource details
+
+
+#### [AuditLog.actor](#actor)[V1AuditLogActor!](/api/graphql/v1/types/objects/v1-audit-log-actor.mdx) \{#actor\}
+Who performed this action
+
+
+
+
+
+
+### Returned By
+
+[`auditLog`](/api/graphql/v1/operations/queries/audit-log.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/audit-logs-page.mdx b/docs/api/graphql/v1/types/objects/audit-logs-page.mdx
new file mode 100644
index 0000000..10984b0
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/audit-logs-page.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: audit-logs-page
+title: AuditLogsPage
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type AuditLogsPage {
+ cursor: PaginationCursor!
+ items: [AuditLogLeaf]
+}
+```
+
+
+
+
+### Fields
+
+#### [AuditLogsPage.cursor](#cursor)[PaginationCursor!](/api/graphql/v1/types/objects/pagination-cursor.mdx) \{#cursor\}
+Pagination cursors
+
+
+#### [AuditLogsPage.items](#items)[[AuditLogLeaf]](/api/graphql/v1/types/objects/audit-log-leaf.mdx) \{#items\}
+A list of type audit_log_leaf.
+
+
+
+
+
+
+### Returned By
+
+[`auditLogs`](/api/graphql/v1/operations/queries/audit-logs.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/component-leaf.mdx b/docs/api/graphql/v1/types/objects/component-leaf.mdx
index 421df2c..cadcf3e 100644
--- a/docs/api/graphql/v1/types/objects/component-leaf.mdx
+++ b/docs/api/graphql/v1/types/objects/component-leaf.mdx
@@ -50,6 +50,8 @@ type ComponentLeaf {
id: ID!
name: String!
description: String
+ tags: Map!
+ position: ComponentPosition
createdAt: DateTime!
updatedAt: DateTime!
ociRepo: OciRepoLeaf
@@ -71,7 +73,15 @@ Display name
#### [ComponentLeaf.description](#description)[String](/api/graphql/v1/types/scalars/string.mdx) \{#description\}
-Component description
+What this component is for
+
+
+#### [ComponentLeaf.tags](#tags)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Tags assigned directly to this component
+
+
+#### [ComponentLeaf.position](#position)[ComponentPosition](/api/graphql/v1/types/objects/component-position.mdx) \{#position\}
+Position on the canvas
#### [ComponentLeaf.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
diff --git a/docs/api/graphql/v1/types/objects/component-payload.mdx b/docs/api/graphql/v1/types/objects/component-payload.mdx
index c3a9fca..a505c4a 100644
--- a/docs/api/graphql/v1/types/objects/component-payload.mdx
+++ b/docs/api/graphql/v1/types/objects/component-payload.mdx
@@ -76,4 +76,4 @@ The object created/updated/deleted by the mutation. May be null if mutation fail
### Returned By
-[`addComponent`](/api/graphql/v1/operations/mutations/add-component.mdx) [`removeComponent`](/api/graphql/v1/operations/mutations/remove-component.mdx)
\ No newline at end of file
+[`addComponent`](/api/graphql/v1/operations/mutations/add-component.mdx) [`removeComponent`](/api/graphql/v1/operations/mutations/remove-component.mdx) [`setComponentPosition`](/api/graphql/v1/operations/mutations/set-component-position.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/component-position.mdx b/docs/api/graphql/v1/types/objects/component-position.mdx
new file mode 100644
index 0000000..c1e6c5d
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/component-position.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: component-position
+title: ComponentPosition
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A component's position on the canvas.
+
+
+```graphql
+type ComponentPosition {
+ x: Int!
+ y: Int!
+}
+```
+
+
+
+
+### Fields
+
+#### [ComponentPosition.x](#x)[Int!](/api/graphql/v1/types/scalars/int.mdx) \{#x\}
+Horizontal position in pixels
+
+
+#### [ComponentPosition.y](#y)[Int!](/api/graphql/v1/types/scalars/int.mdx) \{#y\}
+Vertical position in pixels
+
+
+
+
+
+
+### Member Of
+
+[`Component`](/api/graphql/v1/types/objects/component.mdx) [`ComponentLeaf`](/api/graphql/v1/types/objects/component-leaf.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/component.mdx b/docs/api/graphql/v1/types/objects/component.mdx
index a059385..fcf9725 100644
--- a/docs/api/graphql/v1/types/objects/component.mdx
+++ b/docs/api/graphql/v1/types/objects/component.mdx
@@ -50,6 +50,8 @@ type Component {
id: ID!
name: String!
description: String
+ tags: Map!
+ position: ComponentPosition
createdAt: DateTime!
updatedAt: DateTime!
ociRepo: OciRepo
@@ -71,7 +73,15 @@ Display name
#### [Component.description](#description)[String](/api/graphql/v1/types/scalars/string.mdx) \{#description\}
-Component description
+What this component is for
+
+
+#### [Component.tags](#tags)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Tags assigned directly to this component
+
+
+#### [Component.position](#position)[ComponentPosition](/api/graphql/v1/types/objects/component-position.mdx) \{#position\}
+Position on the canvas
#### [Component.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
diff --git a/docs/api/graphql/v1/types/objects/cost-summary.mdx b/docs/api/graphql/v1/types/objects/cost-summary.mdx
index 18593e7..719b109 100644
--- a/docs/api/graphql/v1/types/objects/cost-summary.mdx
+++ b/docs/api/graphql/v1/types/objects/cost-summary.mdx
@@ -81,4 +81,4 @@ Average daily cost
### Member Of
-[`Environment`](/api/graphql/v1/types/objects/environment.mdx) [`EnvironmentLeaf`](/api/graphql/v1/types/objects/environment-leaf.mdx) [`Project`](/api/graphql/v1/types/objects/project.mdx) [`ProjectLeaf`](/api/graphql/v1/types/objects/project-leaf.mdx)
\ No newline at end of file
+[`Environment`](/api/graphql/v1/types/objects/environment.mdx) [`EnvironmentLeaf`](/api/graphql/v1/types/objects/environment-leaf.mdx) [`Instance`](/api/graphql/v1/types/objects/instance.mdx) [`InstanceLeaf`](/api/graphql/v1/types/objects/instance-leaf.mdx) [`Project`](/api/graphql/v1/types/objects/project.mdx) [`ProjectLeaf`](/api/graphql/v1/types/objects/project-leaf.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/deleted-organization-member-payload.mdx b/docs/api/graphql/v1/types/objects/deleted-organization-member-payload.mdx
new file mode 100644
index 0000000..97ffc9f
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/deleted-organization-member-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: deleted-organization-member-payload
+title: DeletedOrganizationMemberPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type DeletedOrganizationMemberPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: DeletedOrganizationMember
+}
+```
+
+
+
+
+### Fields
+
+#### [DeletedOrganizationMemberPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [DeletedOrganizationMemberPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [DeletedOrganizationMemberPayload.result](#result)[DeletedOrganizationMember](/api/graphql/v1/types/objects/deleted-organization-member.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`deleteOrganizationMember`](/api/graphql/v1/operations/mutations/delete-organization-member.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/deleted-organization-member.mdx b/docs/api/graphql/v1/types/objects/deleted-organization-member.mdx
new file mode 100644
index 0000000..177a33c
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/deleted-organization-member.mdx
@@ -0,0 +1,69 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: deleted-organization-member
+title: DeletedOrganizationMember
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A deleted organization member.
+
+
+```graphql
+type DeletedOrganizationMember {
+ email: String!
+}
+```
+
+
+
+
+### Fields
+
+#### [DeletedOrganizationMember.email](#email)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#email\}
+Email address of the removed member
+
+
+
+
+
+
+### Member Of
+
+[`DeletedOrganizationMemberPayload`](/api/graphql/v1/types/objects/deleted-organization-member-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/environment-leaf.mdx b/docs/api/graphql/v1/types/objects/environment-leaf.mdx
index d0eb390..d962355 100644
--- a/docs/api/graphql/v1/types/objects/environment-leaf.mdx
+++ b/docs/api/graphql/v1/types/objects/environment-leaf.mdx
@@ -50,6 +50,7 @@ type EnvironmentLeaf {
id: ID!
name: String!
description: String
+ tags: Map!
createdAt: DateTime!
updatedAt: DateTime!
project: ProjectLeaf
@@ -74,6 +75,10 @@ Display name
What this environment is for
+#### [EnvironmentLeaf.tags](#tags)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Tags assigned directly to this environment
+
+
#### [EnvironmentLeaf.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
When this environment was created (UTC)
diff --git a/docs/api/graphql/v1/types/objects/environment.mdx b/docs/api/graphql/v1/types/objects/environment.mdx
index 958bb98..3ffdb26 100644
--- a/docs/api/graphql/v1/types/objects/environment.mdx
+++ b/docs/api/graphql/v1/types/objects/environment.mdx
@@ -50,6 +50,7 @@ type Environment {
id: ID!
name: String!
description: String
+ tags: Map!
createdAt: DateTime!
updatedAt: DateTime!
project: Project
@@ -80,6 +81,10 @@ Display name
What this environment is for
+#### [Environment.tags](#tags)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Tags assigned directly to this environment
+
+
#### [Environment.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
When this environment was created (UTC)
diff --git a/docs/api/graphql/v1/types/objects/group-invitation-payload.mdx b/docs/api/graphql/v1/types/objects/group-invitation-payload.mdx
new file mode 100644
index 0000000..86d12eb
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/group-invitation-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: group-invitation-payload
+title: GroupInvitationPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type GroupInvitationPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: GroupInvitation
+}
+```
+
+
+
+
+### Fields
+
+#### [GroupInvitationPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [GroupInvitationPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [GroupInvitationPayload.result](#result)[GroupInvitation](/api/graphql/v1/types/objects/group-invitation.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`createGroupInvitation`](/api/graphql/v1/operations/mutations/create-group-invitation.mdx) [`deleteGroupInvitation`](/api/graphql/v1/operations/mutations/delete-group-invitation.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/group-invitation.mdx b/docs/api/graphql/v1/types/objects/group-invitation.mdx
new file mode 100644
index 0000000..cabaf48
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/group-invitation.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: group-invitation
+title: GroupInvitation
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+An invitation to join a group.
+
+
+```graphql
+type GroupInvitation {
+ id: ID!
+ email: String!
+ createdAt: DateTime!
+}
+```
+
+
+
+
+### Fields
+
+#### [GroupInvitation.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Invitation identifier
+
+
+#### [GroupInvitation.email](#email)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#email\}
+Email address of the invited user
+
+
+#### [GroupInvitation.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When the invitation was sent (UTC)
+
+
+
+
+
+
+### Member Of
+
+[`GroupInvitationPayload`](/api/graphql/v1/types/objects/group-invitation-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/group-leaf.mdx b/docs/api/graphql/v1/types/objects/group-leaf.mdx
new file mode 100644
index 0000000..9f130ac
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/group-leaf.mdx
@@ -0,0 +1,94 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: group-leaf
+title: GroupLeaf
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A group returned in list results.
+
+
+```graphql
+type GroupLeaf {
+ id: ID!
+ name: String!
+ description: String
+ role: GroupRole!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+}
+```
+
+
+
+
+### Fields
+
+#### [GroupLeaf.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Group identifier
+
+
+#### [GroupLeaf.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+Group name
+
+
+#### [GroupLeaf.description](#description)[String](/api/graphql/v1/types/scalars/string.mdx) \{#description\}
+What this group is for
+
+
+#### [GroupLeaf.role](#role)[GroupRole!](/api/graphql/v1/types/enums/group-role.mdx) \{#role\}
+Access level within the organization
+
+
+#### [GroupLeaf.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this group was created (UTC)
+
+
+#### [GroupLeaf.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this group was last modified (UTC)
+
+
+
+
+
+
+### Member Of
+
+[`GroupsPage`](/api/graphql/v1/types/objects/groups-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/group-member-payload.mdx b/docs/api/graphql/v1/types/objects/group-member-payload.mdx
new file mode 100644
index 0000000..11de73a
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/group-member-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: group-member-payload
+title: GroupMemberPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type GroupMemberPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: GroupMember
+}
+```
+
+
+
+
+### Fields
+
+#### [GroupMemberPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [GroupMemberPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [GroupMemberPayload.result](#result)[GroupMember](/api/graphql/v1/types/objects/group-member.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`deleteGroupMember`](/api/graphql/v1/operations/mutations/delete-group-member.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/group-member.mdx b/docs/api/graphql/v1/types/objects/group-member.mdx
new file mode 100644
index 0000000..178ff59
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/group-member.mdx
@@ -0,0 +1,69 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: group-member
+title: GroupMember
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A group member.
+
+
+```graphql
+type GroupMember {
+ email: String!
+}
+```
+
+
+
+
+### Fields
+
+#### [GroupMember.email](#email)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#email\}
+Email address of the member
+
+
+
+
+
+
+### Member Of
+
+[`GroupMemberPayload`](/api/graphql/v1/types/objects/group-member-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/group-payload.mdx b/docs/api/graphql/v1/types/objects/group-payload.mdx
new file mode 100644
index 0000000..0b8b354
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/group-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: group-payload
+title: GroupPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type GroupPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: Group
+}
+```
+
+
+
+
+### Fields
+
+#### [GroupPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [GroupPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [GroupPayload.result](#result)[Group](/api/graphql/v1/types/objects/group.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`createGroup`](/api/graphql/v1/operations/mutations/create-group.mdx) [`deleteGroup`](/api/graphql/v1/operations/mutations/delete-group.mdx) [`updateGroup`](/api/graphql/v1/operations/mutations/update-group.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/group.mdx b/docs/api/graphql/v1/types/objects/group.mdx
new file mode 100644
index 0000000..67f6d9e
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/group.mdx
@@ -0,0 +1,98 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: group
+title: Group
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A group with its full details.
+
+
+```graphql
+type Group {
+ id: ID!
+ name: String!
+ description: String
+ role: GroupRole!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+}
+```
+
+
+
+
+### Fields
+
+#### [Group.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Group identifier
+
+
+#### [Group.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+Group name
+
+
+#### [Group.description](#description)[String](/api/graphql/v1/types/scalars/string.mdx) \{#description\}
+What this group is for
+
+
+#### [Group.role](#role)[GroupRole!](/api/graphql/v1/types/enums/group-role.mdx) \{#role\}
+Access level within the organization
+
+
+#### [Group.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this group was created (UTC)
+
+
+#### [Group.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this group was last modified (UTC)
+
+
+
+
+
+
+### Returned By
+
+[`group`](/api/graphql/v1/operations/queries/group.mdx)
+
+### Member Of
+
+[`GroupPayload`](/api/graphql/v1/types/objects/group-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/groups-page.mdx b/docs/api/graphql/v1/types/objects/groups-page.mdx
new file mode 100644
index 0000000..e079444
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/groups-page.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: groups-page
+title: GroupsPage
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type GroupsPage {
+ cursor: PaginationCursor!
+ items: [GroupLeaf]
+}
+```
+
+
+
+
+### Fields
+
+#### [GroupsPage.cursor](#cursor)[PaginationCursor!](/api/graphql/v1/types/objects/pagination-cursor.mdx) \{#cursor\}
+Pagination cursors
+
+
+#### [GroupsPage.items](#items)[[GroupLeaf]](/api/graphql/v1/types/objects/group-leaf.mdx) \{#items\}
+A list of type group_leaf.
+
+
+
+
+
+
+### Returned By
+
+[`groups`](/api/graphql/v1/operations/queries/groups.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/instance-dependencies-page.mdx b/docs/api/graphql/v1/types/objects/instance-dependencies-page.mdx
new file mode 100644
index 0000000..d04d676
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/instance-dependencies-page.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: instance-dependencies-page
+title: InstanceDependenciesPage
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type InstanceDependenciesPage {
+ cursor: PaginationCursor!
+ items: [InstanceDependency]
+}
+```
+
+
+
+
+### Fields
+
+#### [InstanceDependenciesPage.cursor](#cursor)[PaginationCursor!](/api/graphql/v1/types/objects/pagination-cursor.mdx) \{#cursor\}
+Pagination cursors
+
+
+#### [InstanceDependenciesPage.items](#items)[[InstanceDependency]](/api/graphql/v1/types/objects/instance-dependency.mdx) \{#items\}
+A list of type instance_dependency.
+
+
+
+
+
+
+### Member Of
+
+[`Instance`](/api/graphql/v1/types/objects/instance.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/instance-dependency.mdx b/docs/api/graphql/v1/types/objects/instance-dependency.mdx
new file mode 100644
index 0000000..f680eed
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/instance-dependency.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: instance-dependency
+title: InstanceDependency
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A dependency keyed by the input handle that consumes it.
+
+
+```graphql
+type InstanceDependency {
+ field: String!
+ resource: Resource!
+}
+```
+
+
+
+
+### Fields
+
+#### [InstanceDependency.field](#field)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#field\}
+The input handle that consumes this resource
+
+
+#### [InstanceDependency.resource](#resource)[Resource!](/api/graphql/v1/types/objects/resource.mdx) \{#resource\}
+The resource artifact
+
+
+
+
+
+
+### Member Of
+
+[`InstanceDependenciesPage`](/api/graphql/v1/types/objects/instance-dependencies-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/instance-leaf.mdx b/docs/api/graphql/v1/types/objects/instance-leaf.mdx
index 4e581b7..f0bdd37 100644
--- a/docs/api/graphql/v1/types/objects/instance-leaf.mdx
+++ b/docs/api/graphql/v1/types/objects/instance-leaf.mdx
@@ -50,10 +50,15 @@ type InstanceLeaf {
id: ID!
name: String!
status: InstanceStatus!
+ tags: Map!
version: String!
releaseStrategy: ReleaseStrategy!
createdAt: DateTime!
updatedAt: DateTime!
+ resolvedVersion: String!
+ deployedVersion: String
+ availableUpgrade: String
+ cost: CostSummary!
environment: EnvironmentLeaf
bundle: BundleLeaf
}
@@ -69,13 +74,17 @@ type InstanceLeaf {
#### [InstanceLeaf.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
-Instance display name
+Display name
#### [InstanceLeaf.status](#status)[InstanceStatus!](/api/graphql/v1/types/enums/instance-status.mdx) \{#status\}
Current state of the instance
+#### [InstanceLeaf.tags](#tags)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Tags assigned directly to this instance
+
+
#### [InstanceLeaf.version](#version)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#version\}
Version constraint (e.g., '~1.0' or '1.2.3')
@@ -92,6 +101,22 @@ When this instance was created (UTC)
When this instance was last modified (UTC)
+#### [InstanceLeaf.resolvedVersion](#resolved-version)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#resolved-version\}
+The actual version resolved from the version constraint, used for the next deployment.
+
+
+#### [InstanceLeaf.deployedVersion](#deployed-version)[String](/api/graphql/v1/types/scalars/string.mdx) \{#deployed-version\}
+The version last deployed to infrastructure. May differ from resolvedVersion if not yet deployed.
+
+
+#### [InstanceLeaf.availableUpgrade](#available-upgrade)[String](/api/graphql/v1/types/scalars/string.mdx) \{#available-upgrade\}
+Newest version available for upgrade, or null if already on the latest matching version.
+
+
+#### [InstanceLeaf.cost](#cost)[CostSummary!](/api/graphql/v1/types/objects/cost-summary.mdx) \{#cost\}
+Cloud provider costs for this instance.
+
+
#### [InstanceLeaf.environment](#environment)[EnvironmentLeaf](/api/graphql/v1/types/objects/environment-leaf.mdx) \{#environment\}
The environment this instance is deployed in.
diff --git a/docs/api/graphql/v1/types/objects/instance-resource.mdx b/docs/api/graphql/v1/types/objects/instance-resource.mdx
new file mode 100644
index 0000000..3dbb2bb
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/instance-resource.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: instance-resource
+title: InstanceResource
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A resource keyed by the output handle that produced it.
+
+
+```graphql
+type InstanceResource {
+ field: String!
+ resource: Resource!
+}
+```
+
+
+
+
+### Fields
+
+#### [InstanceResource.field](#field)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#field\}
+The output handle that produced this resource
+
+
+#### [InstanceResource.resource](#resource)[Resource!](/api/graphql/v1/types/objects/resource.mdx) \{#resource\}
+The resource artifact
+
+
+
+
+
+
+### Member Of
+
+[`InstanceResourcesPage`](/api/graphql/v1/types/objects/instance-resources-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/instance-resources-page.mdx b/docs/api/graphql/v1/types/objects/instance-resources-page.mdx
new file mode 100644
index 0000000..fa5cfbf
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/instance-resources-page.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: instance-resources-page
+title: InstanceResourcesPage
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type InstanceResourcesPage {
+ cursor: PaginationCursor!
+ items: [InstanceResource]
+}
+```
+
+
+
+
+### Fields
+
+#### [InstanceResourcesPage.cursor](#cursor)[PaginationCursor!](/api/graphql/v1/types/objects/pagination-cursor.mdx) \{#cursor\}
+Pagination cursors
+
+
+#### [InstanceResourcesPage.items](#items)[[InstanceResource]](/api/graphql/v1/types/objects/instance-resource.mdx) \{#items\}
+A list of type instance_resource.
+
+
+
+
+
+
+### Member Of
+
+[`Instance`](/api/graphql/v1/types/objects/instance.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/instance.mdx b/docs/api/graphql/v1/types/objects/instance.mdx
index d007755..d0ea448 100644
--- a/docs/api/graphql/v1/types/objects/instance.mdx
+++ b/docs/api/graphql/v1/types/objects/instance.mdx
@@ -50,12 +50,23 @@ type Instance {
id: ID!
name: String!
status: InstanceStatus!
+ tags: Map!
version: String!
releaseStrategy: ReleaseStrategy!
createdAt: DateTime!
updatedAt: DateTime!
+ resolvedVersion: String!
+ deployedVersion: String
+ availableUpgrade: String
+ cost: CostSummary!
environment: Environment
bundle: Bundle
+ resources(
+ cursor: Cursor
+ ): InstanceResourcesPage
+ dependencies(
+ cursor: Cursor
+ ): InstanceDependenciesPage
}
```
@@ -69,13 +80,17 @@ type Instance {
#### [Instance.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
-Instance display name
+Display name
#### [Instance.status](#status)[InstanceStatus!](/api/graphql/v1/types/enums/instance-status.mdx) \{#status\}
Current state of the instance
+#### [Instance.tags](#tags)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Tags assigned directly to this instance
+
+
#### [Instance.version](#version)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#version\}
Version constraint (e.g., '~1.0' or '1.2.3')
@@ -92,6 +107,22 @@ When this instance was created (UTC)
When this instance was last modified (UTC)
+#### [Instance.resolvedVersion](#resolved-version)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#resolved-version\}
+The actual version resolved from the version constraint, used for the next deployment.
+
+
+#### [Instance.deployedVersion](#deployed-version)[String](/api/graphql/v1/types/scalars/string.mdx) \{#deployed-version\}
+The version last deployed to infrastructure. May differ from resolvedVersion if not yet deployed.
+
+
+#### [Instance.availableUpgrade](#available-upgrade)[String](/api/graphql/v1/types/scalars/string.mdx) \{#available-upgrade\}
+Newest version available for upgrade, or null if already on the latest matching version.
+
+
+#### [Instance.cost](#cost)[CostSummary!](/api/graphql/v1/types/objects/cost-summary.mdx) \{#cost\}
+Cloud provider costs for this instance.
+
+
#### [Instance.environment](#environment)[Environment](/api/graphql/v1/types/objects/environment.mdx) \{#environment\}
The environment this instance is deployed in.
@@ -100,6 +131,18 @@ The environment this instance is deployed in.
The bundle version currently deployed.
+#### [Instance.resources](#resources)[InstanceResourcesPage](/api/graphql/v1/types/objects/instance-resources-page.mdx) \{#resources\}
+Resources produced by this instance (its output artifacts).
+##### [Instance.resources.cursor](#instance-resources-cursor)[Cursor](/api/graphql/v1/types/inputs/cursor.mdx) \{#instance-resources-cursor\}
+
+
+
+#### [Instance.dependencies](#dependencies)[InstanceDependenciesPage](/api/graphql/v1/types/objects/instance-dependencies-page.mdx) \{#dependencies\}
+Dependencies consumed by this instance (artifacts from other instances wired via connections).
+##### [Instance.dependencies.cursor](#instance-dependencies-cursor)[Cursor](/api/graphql/v1/types/inputs/cursor.mdx) \{#instance-dependencies-cursor\}
+
+
+
diff --git a/docs/api/graphql/v1/types/objects/integration-activation-payload.mdx b/docs/api/graphql/v1/types/objects/integration-activation-payload.mdx
new file mode 100644
index 0000000..18c811c
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/integration-activation-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration-activation-payload
+title: IntegrationActivationPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type IntegrationActivationPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: IntegrationActivation
+}
+```
+
+
+
+
+### Fields
+
+#### [IntegrationActivationPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [IntegrationActivationPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [IntegrationActivationPayload.result](#result)[IntegrationActivation](/api/graphql/v1/types/objects/integration-activation.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`createIntegration`](/api/graphql/v1/operations/mutations/create-integration.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/integration-activation.mdx b/docs/api/graphql/v1/types/objects/integration-activation.mdx
new file mode 100644
index 0000000..783c83c
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/integration-activation.mdx
@@ -0,0 +1,104 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration-activation
+title: IntegrationActivation
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A newly created integration with setup instructions.
+
+
+```graphql
+type IntegrationActivation {
+ id: ID!
+ integrationTypeId: String!
+ config: Map!
+ status: IntegrationStatus!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+ nextRunAt: DateTime
+ instructions: String!
+}
+```
+
+
+
+
+### Fields
+
+#### [IntegrationActivation.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Integration type identifier
+
+
+#### [IntegrationActivation.integrationTypeId](#integration-type-id)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#integration-type-id\}
+The type of integration
+
+
+#### [IntegrationActivation.config](#config)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#config\}
+Integration-specific configuration
+
+
+#### [IntegrationActivation.status](#status)[IntegrationStatus!](/api/graphql/v1/types/enums/integration-status.mdx) \{#status\}
+Current status
+
+
+#### [IntegrationActivation.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this integration was created (UTC)
+
+
+#### [IntegrationActivation.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this integration was last modified (UTC)
+
+
+#### [IntegrationActivation.nextRunAt](#next-run-at)[DateTime](/api/graphql/v1/types/scalars/date-time.mdx) \{#next-run-at\}
+When this integration will next execute
+
+
+#### [IntegrationActivation.instructions](#instructions)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#instructions\}
+Setup instructions for this integration. May contain sensitive credentials — store securely.
+
+
+
+
+
+
+### Member Of
+
+[`IntegrationActivationPayload`](/api/graphql/v1/types/objects/integration-activation-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/integration-leaf.mdx b/docs/api/graphql/v1/types/objects/integration-leaf.mdx
new file mode 100644
index 0000000..7e8c425
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/integration-leaf.mdx
@@ -0,0 +1,99 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration-leaf
+title: IntegrationLeaf
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A configured integration returned in list results.
+
+
+```graphql
+type IntegrationLeaf {
+ id: ID!
+ integrationTypeId: String!
+ config: Map!
+ status: IntegrationStatus!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+ nextRunAt: DateTime
+}
+```
+
+
+
+
+### Fields
+
+#### [IntegrationLeaf.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Integration type identifier (unique per organization)
+
+
+#### [IntegrationLeaf.integrationTypeId](#integration-type-id)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#integration-type-id\}
+The type of integration
+
+
+#### [IntegrationLeaf.config](#config)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#config\}
+Integration-specific configuration
+
+
+#### [IntegrationLeaf.status](#status)[IntegrationStatus!](/api/graphql/v1/types/enums/integration-status.mdx) \{#status\}
+Current status
+
+
+#### [IntegrationLeaf.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this integration was created (UTC)
+
+
+#### [IntegrationLeaf.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this integration was last modified (UTC)
+
+
+#### [IntegrationLeaf.nextRunAt](#next-run-at)[DateTime](/api/graphql/v1/types/scalars/date-time.mdx) \{#next-run-at\}
+When this integration will next execute
+
+
+
+
+
+
+### Member Of
+
+[`IntegrationsPage`](/api/graphql/v1/types/objects/integrations-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/integration-payload.mdx b/docs/api/graphql/v1/types/objects/integration-payload.mdx
new file mode 100644
index 0000000..afde907
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/integration-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration-payload
+title: IntegrationPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type IntegrationPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: Integration
+}
+```
+
+
+
+
+### Fields
+
+#### [IntegrationPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [IntegrationPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [IntegrationPayload.result](#result)[Integration](/api/graphql/v1/types/objects/integration.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`deleteIntegration`](/api/graphql/v1/operations/mutations/delete-integration.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/integration-type-info.mdx b/docs/api/graphql/v1/types/objects/integration-type-info.mdx
new file mode 100644
index 0000000..a903b39
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/integration-type-info.mdx
@@ -0,0 +1,94 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration-type-info
+title: IntegrationTypeInfo
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A supported integration type that can be configured for your organization.
+
+
+```graphql
+type IntegrationTypeInfo {
+ id: String!
+ name: String!
+ description: String
+ docs: String!
+ configSchema: Map!
+ authSchema: Map!
+}
+```
+
+
+
+
+### Fields
+
+#### [IntegrationTypeInfo.id](#id)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#id\}
+Unique identifier for this integration type
+
+
+#### [IntegrationTypeInfo.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+Display name
+
+
+#### [IntegrationTypeInfo.description](#description)[String](/api/graphql/v1/types/scalars/string.mdx) \{#description\}
+What this integration does
+
+
+#### [IntegrationTypeInfo.docs](#docs)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#docs\}
+URL to the documentation
+
+
+#### [IntegrationTypeInfo.configSchema](#config-schema)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#config-schema\}
+JSON Schema for the `config` field when creating this integration
+
+
+#### [IntegrationTypeInfo.authSchema](#auth-schema)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#auth-schema\}
+JSON Schema for the `auth` field when creating this integration
+
+
+
+
+
+
+### Member Of
+
+[`IntegrationTypesPage`](/api/graphql/v1/types/objects/integration-types-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/integration-types-page.mdx b/docs/api/graphql/v1/types/objects/integration-types-page.mdx
new file mode 100644
index 0000000..533f7d8
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/integration-types-page.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration-types-page
+title: IntegrationTypesPage
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type IntegrationTypesPage {
+ cursor: PaginationCursor!
+ items: [IntegrationTypeInfo]
+}
+```
+
+
+
+
+### Fields
+
+#### [IntegrationTypesPage.cursor](#cursor)[PaginationCursor!](/api/graphql/v1/types/objects/pagination-cursor.mdx) \{#cursor\}
+Pagination cursors
+
+
+#### [IntegrationTypesPage.items](#items)[[IntegrationTypeInfo]](/api/graphql/v1/types/objects/integration-type-info.mdx) \{#items\}
+A list of type integration_type_info.
+
+
+
+
+
+
+### Returned By
+
+[`integrationTypes`](/api/graphql/v1/operations/queries/integration-types.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/integration.mdx b/docs/api/graphql/v1/types/objects/integration.mdx
new file mode 100644
index 0000000..ceaf367
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/integration.mdx
@@ -0,0 +1,103 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integration
+title: Integration
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A configured integration with its full details.
+
+
+```graphql
+type Integration {
+ id: ID!
+ integrationTypeId: String!
+ config: Map!
+ status: IntegrationStatus!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+ nextRunAt: DateTime
+}
+```
+
+
+
+
+### Fields
+
+#### [Integration.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Integration type identifier (unique per organization)
+
+
+#### [Integration.integrationTypeId](#integration-type-id)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#integration-type-id\}
+The type of integration
+
+
+#### [Integration.config](#config)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#config\}
+Integration-specific configuration
+
+
+#### [Integration.status](#status)[IntegrationStatus!](/api/graphql/v1/types/enums/integration-status.mdx) \{#status\}
+Current status
+
+
+#### [Integration.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this integration was created (UTC)
+
+
+#### [Integration.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this integration was last modified (UTC)
+
+
+#### [Integration.nextRunAt](#next-run-at)[DateTime](/api/graphql/v1/types/scalars/date-time.mdx) \{#next-run-at\}
+When this integration will next execute
+
+
+
+
+
+
+### Returned By
+
+[`integration`](/api/graphql/v1/operations/queries/integration.mdx)
+
+### Member Of
+
+[`IntegrationPayload`](/api/graphql/v1/types/objects/integration-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/integrations-page.mdx b/docs/api/graphql/v1/types/objects/integrations-page.mdx
new file mode 100644
index 0000000..557d8ff
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/integrations-page.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: integrations-page
+title: IntegrationsPage
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type IntegrationsPage {
+ cursor: PaginationCursor!
+ items: [IntegrationLeaf]
+}
+```
+
+
+
+
+### Fields
+
+#### [IntegrationsPage.cursor](#cursor)[PaginationCursor!](/api/graphql/v1/types/objects/pagination-cursor.mdx) \{#cursor\}
+Pagination cursors
+
+
+#### [IntegrationsPage.items](#items)[[IntegrationLeaf]](/api/graphql/v1/types/objects/integration-leaf.mdx) \{#items\}
+A list of type integration_leaf.
+
+
+
+
+
+
+### Returned By
+
+[`integrations`](/api/graphql/v1/operations/queries/integrations.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/oci-repo-leaf.mdx b/docs/api/graphql/v1/types/objects/oci-repo-leaf.mdx
index 8a557a2..6b47df4 100644
--- a/docs/api/graphql/v1/types/objects/oci-repo-leaf.mdx
+++ b/docs/api/graphql/v1/types/objects/oci-repo-leaf.mdx
@@ -42,7 +42,7 @@ export const Details = ({ dataOpen, dataClose, children, startOpen = false }) =>
-Reference to an OCI repository.
+An OCI repository returned in list results.
```graphql
diff --git a/docs/api/graphql/v1/types/objects/oci-repo.mdx b/docs/api/graphql/v1/types/objects/oci-repo.mdx
index 52c6c44..5b49037 100644
--- a/docs/api/graphql/v1/types/objects/oci-repo.mdx
+++ b/docs/api/graphql/v1/types/objects/oci-repo.mdx
@@ -42,7 +42,7 @@ export const Details = ({ dataOpen, dataClose, children, startOpen = false }) =>
-Reference to an OCI repository.
+An OCI repository with its full details.
```graphql
diff --git a/docs/api/graphql/v1/types/objects/organization-tag-constraint-leaf.mdx b/docs/api/graphql/v1/types/objects/organization-tag-constraint-leaf.mdx
new file mode 100644
index 0000000..7ffa649
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/organization-tag-constraint-leaf.mdx
@@ -0,0 +1,94 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: organization-tag-constraint-leaf
+title: OrganizationTagConstraintLeaf
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A tag constraint returned in list results.
+
+
+```graphql
+type OrganizationTagConstraintLeaf {
+ id: ID!
+ key: String!
+ scope: TagConstraintScope!
+ required: Boolean!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+}
+```
+
+
+
+
+### Fields
+
+#### [OrganizationTagConstraintLeaf.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Unique identifier
+
+
+#### [OrganizationTagConstraintLeaf.key](#key)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#key\}
+The tag key name (e.g. TEAM, DOMAIN)
+
+
+#### [OrganizationTagConstraintLeaf.scope](#scope)[TagConstraintScope!](/api/graphql/v1/types/enums/tag-constraint-scope.mdx) \{#scope\}
+Resource level where this tag is set
+
+
+#### [OrganizationTagConstraintLeaf.required](#required)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#required\}
+Whether this tag must be set when creating a resource at the specified scope
+
+
+#### [OrganizationTagConstraintLeaf.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this constraint was created (UTC)
+
+
+#### [OrganizationTagConstraintLeaf.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this constraint was last modified (UTC)
+
+
+
+
+
+
+### Member Of
+
+[`OrganizationTagConstraintsPage`](/api/graphql/v1/types/objects/organization-tag-constraints-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/organization-tag-constraint-payload.mdx b/docs/api/graphql/v1/types/objects/organization-tag-constraint-payload.mdx
new file mode 100644
index 0000000..78ebf99
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/organization-tag-constraint-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: organization-tag-constraint-payload
+title: OrganizationTagConstraintPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type OrganizationTagConstraintPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: OrganizationTagConstraint
+}
+```
+
+
+
+
+### Fields
+
+#### [OrganizationTagConstraintPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [OrganizationTagConstraintPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [OrganizationTagConstraintPayload.result](#result)[OrganizationTagConstraint](/api/graphql/v1/types/objects/organization-tag-constraint.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`createOrganizationTagConstraint`](/api/graphql/v1/operations/mutations/create-organization-tag-constraint.mdx) [`deleteOrganizationTagConstraint`](/api/graphql/v1/operations/mutations/delete-organization-tag-constraint.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/organization-tag-constraint.mdx b/docs/api/graphql/v1/types/objects/organization-tag-constraint.mdx
new file mode 100644
index 0000000..966af6c
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/organization-tag-constraint.mdx
@@ -0,0 +1,94 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: organization-tag-constraint
+title: OrganizationTagConstraint
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A tag constraint with its full details.
+
+
+```graphql
+type OrganizationTagConstraint {
+ id: ID!
+ key: String!
+ scope: TagConstraintScope!
+ required: Boolean!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+}
+```
+
+
+
+
+### Fields
+
+#### [OrganizationTagConstraint.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Unique identifier
+
+
+#### [OrganizationTagConstraint.key](#key)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#key\}
+The tag key name (e.g. TEAM, DOMAIN)
+
+
+#### [OrganizationTagConstraint.scope](#scope)[TagConstraintScope!](/api/graphql/v1/types/enums/tag-constraint-scope.mdx) \{#scope\}
+Resource level where this tag is set
+
+
+#### [OrganizationTagConstraint.required](#required)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#required\}
+Whether this tag must be set when creating a resource at the specified scope
+
+
+#### [OrganizationTagConstraint.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this constraint was created (UTC)
+
+
+#### [OrganizationTagConstraint.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this constraint was last modified (UTC)
+
+
+
+
+
+
+### Member Of
+
+[`OrganizationTagConstraintPayload`](/api/graphql/v1/types/objects/organization-tag-constraint-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/organization-tag-constraints-page.mdx b/docs/api/graphql/v1/types/objects/organization-tag-constraints-page.mdx
new file mode 100644
index 0000000..66261bf
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/organization-tag-constraints-page.mdx
@@ -0,0 +1,74 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: organization-tag-constraints-page
+title: OrganizationTagConstraintsPage
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type OrganizationTagConstraintsPage {
+ cursor: PaginationCursor!
+ items: [OrganizationTagConstraintLeaf]
+}
+```
+
+
+
+
+### Fields
+
+#### [OrganizationTagConstraintsPage.cursor](#cursor)[PaginationCursor!](/api/graphql/v1/types/objects/pagination-cursor.mdx) \{#cursor\}
+Pagination cursors
+
+
+#### [OrganizationTagConstraintsPage.items](#items)[[OrganizationTagConstraintLeaf]](/api/graphql/v1/types/objects/organization-tag-constraint-leaf.mdx) \{#items\}
+A list of type organization_tag_constraint_leaf.
+
+
+
+
+
+
+### Member Of
+
+[`Organization`](/api/graphql/v1/types/objects/organization.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/organization.mdx b/docs/api/graphql/v1/types/objects/organization.mdx
index 3c0786c..ec70fb2 100644
--- a/docs/api/graphql/v1/types/objects/organization.mdx
+++ b/docs/api/graphql/v1/types/objects/organization.mdx
@@ -42,7 +42,7 @@ export const Details = ({ dataOpen, dataClose, children, startOpen = false }) =>
-An organization with full details.
+An organization with its full details and related resources.
```graphql
@@ -52,6 +52,13 @@ type Organization {
createdAt: DateTime!
updatedAt: DateTime!
logo: LogoOrganization
+ tagConstraints(
+ sort: OrganizationTagConstraintsSort
+ cursor: Cursor
+ ): OrganizationTagConstraintsPage
+ tagSchema(
+ scope: TagConstraintScope!
+ ): Map!
}
```
@@ -80,10 +87,30 @@ When this organization was last modified (UTC)
The organization's logo image.
+#### [Organization.tagConstraints](#tag-constraints)[OrganizationTagConstraintsPage](/api/graphql/v1/types/objects/organization-tag-constraints-page.mdx) \{#tag-constraints\}
+Tag constraints that define the structural tags for this organization.
+##### [Organization.tagConstraints.sort](#organization-tag-constraints-sort)[OrganizationTagConstraintsSort](/api/graphql/v1/types/inputs/organization-tag-constraints-sort.mdx) \{#organization-tag-constraints-sort\}
+How to sort results
+##### [Organization.tagConstraints.cursor](#organization-tag-constraints-cursor)[Cursor](/api/graphql/v1/types/inputs/cursor.mdx) \{#organization-tag-constraints-cursor\}
+Pagination cursor from a previous response
+#### [Organization.tagSchema](#tag-schema)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#tag-schema\}
+JSON Schema describing the tag fields for a given resource scope.
+##### [Organization.tagSchema.scope](#organization-tag-schema-scope)[TagConstraintScope!](/api/graphql/v1/types/enums/tag-constraint-scope.mdx) \{#organization-tag-schema-scope\}
+Resource level (e.g. PROJECT, ENVIRONMENT)
+
+
+
+
+
+
+### Returned By
+
+[`organization`](/api/graphql/v1/operations/queries/organization.mdx)
+
### Member Of
[`OrganizationPayload`](/api/graphql/v1/types/objects/organization-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/pagination-cursor.mdx b/docs/api/graphql/v1/types/objects/pagination-cursor.mdx
index d5e7114..f24c092 100644
--- a/docs/api/graphql/v1/types/objects/pagination-cursor.mdx
+++ b/docs/api/graphql/v1/types/objects/pagination-cursor.mdx
@@ -71,4 +71,4 @@ Cursor to the previous page
### Member Of
-[`ComponentsPage`](/api/graphql/v1/types/objects/components-page.mdx) [`DeploymentsPage`](/api/graphql/v1/types/objects/deployments-page.mdx) [`EnvironmentsPage`](/api/graphql/v1/types/objects/environments-page.mdx) [`IdentitiesViewerPage`](/api/graphql/v1/types/objects/identities-viewer-page.mdx) [`InstancesPage`](/api/graphql/v1/types/objects/instances-page.mdx) [`InvitesViewerPage`](/api/graphql/v1/types/objects/invites-viewer-page.mdx) [`LinksPage`](/api/graphql/v1/types/objects/links-page.mdx) [`ParamDimensionsPage`](/api/graphql/v1/types/objects/param-dimensions-page.mdx) [`ProjectsPage`](/api/graphql/v1/types/objects/projects-page.mdx) [`ViewerOrganizationsPage`](/api/graphql/v1/types/objects/viewer-organizations-page.mdx)
\ No newline at end of file
+[`AuditLogsPage`](/api/graphql/v1/types/objects/audit-logs-page.mdx) [`ComponentsPage`](/api/graphql/v1/types/objects/components-page.mdx) [`DeploymentsPage`](/api/graphql/v1/types/objects/deployments-page.mdx) [`EnvironmentsPage`](/api/graphql/v1/types/objects/environments-page.mdx) [`GroupsPage`](/api/graphql/v1/types/objects/groups-page.mdx) [`IdentitiesViewerPage`](/api/graphql/v1/types/objects/identities-viewer-page.mdx) [`InstanceDependenciesPage`](/api/graphql/v1/types/objects/instance-dependencies-page.mdx) [`InstanceResourcesPage`](/api/graphql/v1/types/objects/instance-resources-page.mdx) [`InstancesPage`](/api/graphql/v1/types/objects/instances-page.mdx) [`IntegrationsPage`](/api/graphql/v1/types/objects/integrations-page.mdx) [`IntegrationTypesPage`](/api/graphql/v1/types/objects/integration-types-page.mdx) [`InvitesViewerPage`](/api/graphql/v1/types/objects/invites-viewer-page.mdx) [`LinksPage`](/api/graphql/v1/types/objects/links-page.mdx) [`OrganizationTagConstraintsPage`](/api/graphql/v1/types/objects/organization-tag-constraints-page.mdx) [`ParamDimensionsPage`](/api/graphql/v1/types/objects/param-dimensions-page.mdx) [`ProjectsPage`](/api/graphql/v1/types/objects/projects-page.mdx) [`ViewerOrganizationsPage`](/api/graphql/v1/types/objects/viewer-organizations-page.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/project-leaf.mdx b/docs/api/graphql/v1/types/objects/project-leaf.mdx
index ed08f1c..b3cf79b 100644
--- a/docs/api/graphql/v1/types/objects/project-leaf.mdx
+++ b/docs/api/graphql/v1/types/objects/project-leaf.mdx
@@ -50,6 +50,7 @@ type ProjectLeaf {
id: ID!
name: String!
description: String
+ tags: Map!
createdAt: DateTime!
updatedAt: DateTime!
cost: CostSummary!
@@ -73,6 +74,10 @@ Display name
What this project is for
+#### [ProjectLeaf.tags](#tags)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Tags assigned directly to this project
+
+
#### [ProjectLeaf.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
When this project was created (UTC)
diff --git a/docs/api/graphql/v1/types/objects/project.mdx b/docs/api/graphql/v1/types/objects/project.mdx
index 096a5cc..0dca913 100644
--- a/docs/api/graphql/v1/types/objects/project.mdx
+++ b/docs/api/graphql/v1/types/objects/project.mdx
@@ -50,6 +50,7 @@ type Project {
id: ID!
name: String!
description: String
+ tags: Map!
createdAt: DateTime!
updatedAt: DateTime!
deletable: Deletable!
@@ -79,6 +80,10 @@ Display name
What this project is for
+#### [Project.tags](#tags)[Map!](/api/graphql/v1/types/scalars/map.mdx) \{#tags\}
+Tags assigned directly to this project
+
+
#### [Project.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
When this project was created (UTC)
diff --git a/docs/api/graphql/v1/types/objects/remote-reference-payload.mdx b/docs/api/graphql/v1/types/objects/remote-reference-payload.mdx
new file mode 100644
index 0000000..c771900
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/remote-reference-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: remote-reference-payload
+title: RemoteReferencePayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type RemoteReferencePayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: RemoteReference
+}
+```
+
+
+
+
+### Fields
+
+#### [RemoteReferencePayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [RemoteReferencePayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [RemoteReferencePayload.result](#result)[RemoteReference](/api/graphql/v1/types/objects/remote-reference.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`removeRemoteReference`](/api/graphql/v1/operations/mutations/remove-remote-reference.mdx) [`setRemoteReference`](/api/graphql/v1/operations/mutations/set-remote-reference.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/remote-reference.mdx b/docs/api/graphql/v1/types/objects/remote-reference.mdx
new file mode 100644
index 0000000..26f9478
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/remote-reference.mdx
@@ -0,0 +1,89 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: remote-reference
+title: RemoteReference
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A remote reference linking an instance to an external resource.
+
+
+```graphql
+type RemoteReference {
+ id: ID!
+ field: String!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+ resource: Resource!
+}
+```
+
+
+
+
+### Fields
+
+#### [RemoteReference.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Unique identifier
+
+
+#### [RemoteReference.field](#field)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#field\}
+The resource field this reference is assigned to
+
+
+#### [RemoteReference.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this remote reference was created (UTC)
+
+
+#### [RemoteReference.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this remote reference was last modified (UTC)
+
+
+#### [RemoteReference.resource](#resource)[Resource!](/api/graphql/v1/types/objects/resource.mdx) \{#resource\}
+The external resource this reference points to.
+
+
+
+
+
+
+### Member Of
+
+[`RemoteReferencePayload`](/api/graphql/v1/types/objects/remote-reference-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/resource.mdx b/docs/api/graphql/v1/types/objects/resource.mdx
new file mode 100644
index 0000000..a355fbc
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/resource.mdx
@@ -0,0 +1,89 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: resource
+title: Resource
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+An artifact produced or consumed by an instance.
+
+
+```graphql
+type Resource {
+ id: ID!
+ name: String!
+ type: String
+ createdAt: DateTime!
+ updatedAt: DateTime!
+}
+```
+
+
+
+
+### Fields
+
+#### [Resource.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Resource identifier (`package.field` for provisioned resources, UUID for imports)
+
+
+#### [Resource.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+Resource name
+
+
+#### [Resource.type](#type)[String](/api/graphql/v1/types/scalars/string.mdx) \{#type\}
+Resource type (e.g., the artifact definition type)
+
+
+#### [Resource.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this resource was created (UTC)
+
+
+#### [Resource.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this resource was last modified (UTC)
+
+
+
+
+
+
+### Member Of
+
+[`InstanceDependency`](/api/graphql/v1/types/objects/instance-dependency.mdx) [`InstanceResource`](/api/graphql/v1/types/objects/instance-resource.mdx) [`RemoteReference`](/api/graphql/v1/types/objects/remote-reference.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/service-account-group-payload.mdx b/docs/api/graphql/v1/types/objects/service-account-group-payload.mdx
new file mode 100644
index 0000000..82d9261
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/service-account-group-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: service-account-group-payload
+title: ServiceAccountGroupPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type ServiceAccountGroupPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: ServiceAccount
+}
+```
+
+
+
+
+### Fields
+
+#### [ServiceAccountGroupPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [ServiceAccountGroupPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [ServiceAccountGroupPayload.result](#result)[ServiceAccount](/api/graphql/v1/types/objects/service-account.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`addServiceAccountToGroup`](/api/graphql/v1/operations/mutations/add-service-account-to-group.mdx) [`removeServiceAccountFromGroup`](/api/graphql/v1/operations/mutations/remove-service-account-from-group.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/service-account-payload.mdx b/docs/api/graphql/v1/types/objects/service-account-payload.mdx
new file mode 100644
index 0000000..8fd569a
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/service-account-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: service-account-payload
+title: ServiceAccountPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type ServiceAccountPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: ServiceAccount
+}
+```
+
+
+
+
+### Fields
+
+#### [ServiceAccountPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [ServiceAccountPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [ServiceAccountPayload.result](#result)[ServiceAccount](/api/graphql/v1/types/objects/service-account.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`deleteServiceAccount`](/api/graphql/v1/operations/mutations/delete-service-account.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/service-account-with-secret-payload.mdx b/docs/api/graphql/v1/types/objects/service-account-with-secret-payload.mdx
new file mode 100644
index 0000000..52fb691
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/service-account-with-secret-payload.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: service-account-with-secret-payload
+title: ServiceAccountWithSecretPayload
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+No description
+
+
+```graphql
+type ServiceAccountWithSecretPayload {
+ successful: Boolean!
+ messages: [ValidationMessage]
+ result: ServiceAccountWithSecret
+}
+```
+
+
+
+
+### Fields
+
+#### [ServiceAccountWithSecretPayload.successful](#successful)[Boolean!](/api/graphql/v1/types/scalars/boolean.mdx) \{#successful\}
+Indicates if the mutation completed successfully or not.
+
+
+#### [ServiceAccountWithSecretPayload.messages](#messages)[[ValidationMessage]](/api/graphql/v1/types/objects/validation-message.mdx) \{#messages\}
+A list of failed validations. May be blank or null if mutation succeeded.
+
+
+#### [ServiceAccountWithSecretPayload.result](#result)[ServiceAccountWithSecret](/api/graphql/v1/types/objects/service-account-with-secret.mdx) \{#result\}
+The object created/updated/deleted by the mutation. May be null if mutation failed.
+
+
+
+
+
+
+### Returned By
+
+[`createServiceAccount`](/api/graphql/v1/operations/mutations/create-service-account.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/service-account-with-secret.mdx b/docs/api/graphql/v1/types/objects/service-account-with-secret.mdx
new file mode 100644
index 0000000..ccde8ce
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/service-account-with-secret.mdx
@@ -0,0 +1,94 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: service-account-with-secret
+title: ServiceAccountWithSecret
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A service account with its secret token. The secret is only visible on creation.
+
+
+```graphql
+type ServiceAccountWithSecret {
+ id: ID!
+ name: String!
+ description: String
+ secret: String!
+ createdAt: DateTime!
+ updatedAt: DateTime!
+}
+```
+
+
+
+
+### Fields
+
+#### [ServiceAccountWithSecret.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Service account identifier
+
+
+#### [ServiceAccountWithSecret.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+Service account name
+
+
+#### [ServiceAccountWithSecret.description](#description)[String](/api/graphql/v1/types/scalars/string.mdx) \{#description\}
+What this service account is for
+
+
+#### [ServiceAccountWithSecret.secret](#secret)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#secret\}
+Secret token for authentication. Only returned on creation.
+
+
+#### [ServiceAccountWithSecret.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this service account was created (UTC)
+
+
+#### [ServiceAccountWithSecret.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this service account was last modified (UTC)
+
+
+
+
+
+
+### Member Of
+
+[`ServiceAccountWithSecretPayload`](/api/graphql/v1/types/objects/service-account-with-secret-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/service-account.mdx b/docs/api/graphql/v1/types/objects/service-account.mdx
new file mode 100644
index 0000000..713da1a
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/service-account.mdx
@@ -0,0 +1,89 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: service-account
+title: ServiceAccount
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A service account with its full details.
+
+
+```graphql
+type ServiceAccount {
+ id: ID!
+ name: String!
+ description: String
+ createdAt: DateTime!
+ updatedAt: DateTime!
+}
+```
+
+
+
+
+### Fields
+
+#### [ServiceAccount.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Service account identifier
+
+
+#### [ServiceAccount.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+Service account name
+
+
+#### [ServiceAccount.description](#description)[String](/api/graphql/v1/types/scalars/string.mdx) \{#description\}
+What this service account is for
+
+
+#### [ServiceAccount.createdAt](#created-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#created-at\}
+When this service account was created (UTC)
+
+
+#### [ServiceAccount.updatedAt](#updated-at)[DateTime!](/api/graphql/v1/types/scalars/date-time.mdx) \{#updated-at\}
+When this service account was last modified (UTC)
+
+
+
+
+
+
+### Member Of
+
+[`ServiceAccountGroupPayload`](/api/graphql/v1/types/objects/service-account-group-payload.mdx) [`ServiceAccountPayload`](/api/graphql/v1/types/objects/service-account-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/v1-audit-log-actor.mdx b/docs/api/graphql/v1/types/objects/v1-audit-log-actor.mdx
new file mode 100644
index 0000000..89bc56c
--- /dev/null
+++ b/docs/api/graphql/v1/types/objects/v1-audit-log-actor.mdx
@@ -0,0 +1,79 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: v1-audit-log-actor
+title: V1AuditLogActor
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+The actor that performed an audit-logged action.
+
+
+```graphql
+type V1AuditLogActor {
+ id: ID!
+ type: AuditLogActorType!
+ name: String!
+}
+```
+
+
+
+
+### Fields
+
+#### [V1AuditLogActor.id](#id)[ID!](/api/graphql/v1/types/scalars/id.mdx) \{#id\}
+Actor's unique identifier
+
+
+#### [V1AuditLogActor.type](#type)[AuditLogActorType!](/api/graphql/v1/types/enums/audit-log-actor-type.mdx) \{#type\}
+What kind of actor this is
+
+
+#### [V1AuditLogActor.name](#name)[String!](/api/graphql/v1/types/scalars/string.mdx) \{#name\}
+Display name (email for users, name for service accounts)
+
+
+
+
+
+
+### Member Of
+
+[`AuditLog`](/api/graphql/v1/types/objects/audit-log.mdx) [`AuditLogLeaf`](/api/graphql/v1/types/objects/audit-log-leaf.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/objects/validation-message.mdx b/docs/api/graphql/v1/types/objects/validation-message.mdx
index f0c13ab..2339279 100644
--- a/docs/api/graphql/v1/types/objects/validation-message.mdx
+++ b/docs/api/graphql/v1/types/objects/validation-message.mdx
@@ -118,4 +118,4 @@ A list of substitutions to be applied to a validation message template
### Member Of
-[`AvatarViewerPayload`](/api/graphql/v1/types/objects/avatar-viewer-payload.mdx) [`ComponentPayload`](/api/graphql/v1/types/objects/component-payload.mdx) [`EnvironmentPayload`](/api/graphql/v1/types/objects/environment-payload.mdx) [`InviteViewerPayload`](/api/graphql/v1/types/objects/invite-viewer-payload.mdx) [`LinkPayload`](/api/graphql/v1/types/objects/link-payload.mdx) [`LogoOrganizationPayload`](/api/graphql/v1/types/objects/logo-organization-payload.mdx) [`OrganizationPayload`](/api/graphql/v1/types/objects/organization-payload.mdx) [`ProjectPayload`](/api/graphql/v1/types/objects/project-payload.mdx)
\ No newline at end of file
+[`AccessTokenPayload`](/api/graphql/v1/types/objects/access-token-payload.mdx) [`AccessTokenWithValuePayload`](/api/graphql/v1/types/objects/access-token-with-value-payload.mdx) [`AvatarViewerPayload`](/api/graphql/v1/types/objects/avatar-viewer-payload.mdx) [`ComponentPayload`](/api/graphql/v1/types/objects/component-payload.mdx) [`DeletedOrganizationMemberPayload`](/api/graphql/v1/types/objects/deleted-organization-member-payload.mdx) [`EnvironmentPayload`](/api/graphql/v1/types/objects/environment-payload.mdx) [`GroupInvitationPayload`](/api/graphql/v1/types/objects/group-invitation-payload.mdx) [`GroupMemberPayload`](/api/graphql/v1/types/objects/group-member-payload.mdx) [`GroupPayload`](/api/graphql/v1/types/objects/group-payload.mdx) [`IntegrationActivationPayload`](/api/graphql/v1/types/objects/integration-activation-payload.mdx) [`IntegrationPayload`](/api/graphql/v1/types/objects/integration-payload.mdx) [`InviteViewerPayload`](/api/graphql/v1/types/objects/invite-viewer-payload.mdx) [`LinkPayload`](/api/graphql/v1/types/objects/link-payload.mdx) [`LogoOrganizationPayload`](/api/graphql/v1/types/objects/logo-organization-payload.mdx) [`OrganizationPayload`](/api/graphql/v1/types/objects/organization-payload.mdx) [`OrganizationTagConstraintPayload`](/api/graphql/v1/types/objects/organization-tag-constraint-payload.mdx) [`ProjectPayload`](/api/graphql/v1/types/objects/project-payload.mdx) [`RemoteReferencePayload`](/api/graphql/v1/types/objects/remote-reference-payload.mdx) [`ServiceAccountGroupPayload`](/api/graphql/v1/types/objects/service-account-group-payload.mdx) [`ServiceAccountPayload`](/api/graphql/v1/types/objects/service-account-payload.mdx) [`ServiceAccountWithSecretPayload`](/api/graphql/v1/types/objects/service-account-with-secret-payload.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/scalars/boolean.mdx b/docs/api/graphql/v1/types/scalars/boolean.mdx
index 97c2133..bab0fd4 100644
--- a/docs/api/graphql/v1/types/scalars/boolean.mdx
+++ b/docs/api/graphql/v1/types/scalars/boolean.mdx
@@ -58,4 +58,4 @@ scalar Boolean
### Member Of
-[`AvatarViewerPayload`](/api/graphql/v1/types/objects/avatar-viewer-payload.mdx) [`ComponentPayload`](/api/graphql/v1/types/objects/component-payload.mdx) [`Deletable`](/api/graphql/v1/types/objects/deletable.mdx) [`EnvironmentPayload`](/api/graphql/v1/types/objects/environment-payload.mdx) [`include`](/api/graphql/v1/operations/directives/include.mdx) [`InviteViewerPayload`](/api/graphql/v1/types/objects/invite-viewer-payload.mdx) [`LinkPayload`](/api/graphql/v1/types/objects/link-payload.mdx) [`LogoOrganizationPayload`](/api/graphql/v1/types/objects/logo-organization-payload.mdx) [`OrganizationPayload`](/api/graphql/v1/types/objects/organization-payload.mdx) [`ProjectPayload`](/api/graphql/v1/types/objects/project-payload.mdx) [`skip`](/api/graphql/v1/operations/directives/skip.mdx)
\ No newline at end of file
+[`AccessTokenPayload`](/api/graphql/v1/types/objects/access-token-payload.mdx) [`AccessTokenWithValuePayload`](/api/graphql/v1/types/objects/access-token-with-value-payload.mdx) [`AvatarViewerPayload`](/api/graphql/v1/types/objects/avatar-viewer-payload.mdx) [`ComponentPayload`](/api/graphql/v1/types/objects/component-payload.mdx) [`CreateOrganizationTagConstraintInput`](/api/graphql/v1/types/inputs/create-organization-tag-constraint-input.mdx) [`Deletable`](/api/graphql/v1/types/objects/deletable.mdx) [`DeletedOrganizationMemberPayload`](/api/graphql/v1/types/objects/deleted-organization-member-payload.mdx) [`EnvironmentPayload`](/api/graphql/v1/types/objects/environment-payload.mdx) [`GroupInvitationPayload`](/api/graphql/v1/types/objects/group-invitation-payload.mdx) [`GroupMemberPayload`](/api/graphql/v1/types/objects/group-member-payload.mdx) [`GroupPayload`](/api/graphql/v1/types/objects/group-payload.mdx) [`include`](/api/graphql/v1/operations/directives/include.mdx) [`IntegrationActivationPayload`](/api/graphql/v1/types/objects/integration-activation-payload.mdx) [`IntegrationPayload`](/api/graphql/v1/types/objects/integration-payload.mdx) [`InviteViewerPayload`](/api/graphql/v1/types/objects/invite-viewer-payload.mdx) [`LinkPayload`](/api/graphql/v1/types/objects/link-payload.mdx) [`LogoOrganizationPayload`](/api/graphql/v1/types/objects/logo-organization-payload.mdx) [`OrganizationPayload`](/api/graphql/v1/types/objects/organization-payload.mdx) [`OrganizationTagConstraint`](/api/graphql/v1/types/objects/organization-tag-constraint.mdx) [`OrganizationTagConstraintLeaf`](/api/graphql/v1/types/objects/organization-tag-constraint-leaf.mdx) [`OrganizationTagConstraintPayload`](/api/graphql/v1/types/objects/organization-tag-constraint-payload.mdx) [`ProjectPayload`](/api/graphql/v1/types/objects/project-payload.mdx) [`RemoteReferencePayload`](/api/graphql/v1/types/objects/remote-reference-payload.mdx) [`ServiceAccountGroupPayload`](/api/graphql/v1/types/objects/service-account-group-payload.mdx) [`ServiceAccountPayload`](/api/graphql/v1/types/objects/service-account-payload.mdx) [`ServiceAccountWithSecretPayload`](/api/graphql/v1/types/objects/service-account-with-secret-payload.mdx) [`skip`](/api/graphql/v1/operations/directives/skip.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/scalars/date-time.mdx b/docs/api/graphql/v1/types/scalars/date-time.mdx
index 45361cb..d557e7c 100644
--- a/docs/api/graphql/v1/types/scalars/date-time.mdx
+++ b/docs/api/graphql/v1/types/scalars/date-time.mdx
@@ -61,4 +61,4 @@ scalar DateTime
### Member Of
-[`AccountIdentityViewer`](/api/graphql/v1/types/objects/account-identity-viewer.mdx) [`AccountViewer`](/api/graphql/v1/types/objects/account-viewer.mdx) [`AvatarViewer`](/api/graphql/v1/types/objects/avatar-viewer.mdx) [`Bundle`](/api/graphql/v1/types/objects/bundle.mdx) [`BundleLeaf`](/api/graphql/v1/types/objects/bundle-leaf.mdx) [`Component`](/api/graphql/v1/types/objects/component.mdx) [`ComponentLeaf`](/api/graphql/v1/types/objects/component-leaf.mdx) [`Deployment`](/api/graphql/v1/types/objects/deployment.mdx) [`DeploymentLeaf`](/api/graphql/v1/types/objects/deployment-leaf.mdx) [`Environment`](/api/graphql/v1/types/objects/environment.mdx) [`EnvironmentLeaf`](/api/graphql/v1/types/objects/environment-leaf.mdx) [`Instance`](/api/graphql/v1/types/objects/instance.mdx) [`InstanceLeaf`](/api/graphql/v1/types/objects/instance-leaf.mdx) [`InviteViewer`](/api/graphql/v1/types/objects/invite-viewer.mdx) [`Link`](/api/graphql/v1/types/objects/link.mdx) [`LinkLeaf`](/api/graphql/v1/types/objects/link-leaf.mdx) [`LogoOrganization`](/api/graphql/v1/types/objects/logo-organization.mdx) [`Organization`](/api/graphql/v1/types/objects/organization.mdx) [`Project`](/api/graphql/v1/types/objects/project.mdx) [`ProjectLeaf`](/api/graphql/v1/types/objects/project-leaf.mdx) [`ServiceAccountViewer`](/api/graphql/v1/types/objects/service-account-viewer.mdx)
\ No newline at end of file
+[`AccessToken`](/api/graphql/v1/types/objects/access-token.mdx) [`AccessTokenWithValue`](/api/graphql/v1/types/objects/access-token-with-value.mdx) [`AccountIdentityViewer`](/api/graphql/v1/types/objects/account-identity-viewer.mdx) [`AccountViewer`](/api/graphql/v1/types/objects/account-viewer.mdx) [`AuditLog`](/api/graphql/v1/types/objects/audit-log.mdx) [`AuditLogLeaf`](/api/graphql/v1/types/objects/audit-log-leaf.mdx) [`AvatarViewer`](/api/graphql/v1/types/objects/avatar-viewer.mdx) [`Bundle`](/api/graphql/v1/types/objects/bundle.mdx) [`BundleLeaf`](/api/graphql/v1/types/objects/bundle-leaf.mdx) [`Component`](/api/graphql/v1/types/objects/component.mdx) [`ComponentLeaf`](/api/graphql/v1/types/objects/component-leaf.mdx) [`DatetimeFilter`](/api/graphql/v1/types/inputs/datetime-filter.mdx) [`Deployment`](/api/graphql/v1/types/objects/deployment.mdx) [`DeploymentLeaf`](/api/graphql/v1/types/objects/deployment-leaf.mdx) [`Environment`](/api/graphql/v1/types/objects/environment.mdx) [`EnvironmentLeaf`](/api/graphql/v1/types/objects/environment-leaf.mdx) [`Group`](/api/graphql/v1/types/objects/group.mdx) [`GroupInvitation`](/api/graphql/v1/types/objects/group-invitation.mdx) [`GroupLeaf`](/api/graphql/v1/types/objects/group-leaf.mdx) [`Instance`](/api/graphql/v1/types/objects/instance.mdx) [`InstanceLeaf`](/api/graphql/v1/types/objects/instance-leaf.mdx) [`Integration`](/api/graphql/v1/types/objects/integration.mdx) [`IntegrationActivation`](/api/graphql/v1/types/objects/integration-activation.mdx) [`IntegrationLeaf`](/api/graphql/v1/types/objects/integration-leaf.mdx) [`InviteViewer`](/api/graphql/v1/types/objects/invite-viewer.mdx) [`Link`](/api/graphql/v1/types/objects/link.mdx) [`LinkLeaf`](/api/graphql/v1/types/objects/link-leaf.mdx) [`LogoOrganization`](/api/graphql/v1/types/objects/logo-organization.mdx) [`Organization`](/api/graphql/v1/types/objects/organization.mdx) [`OrganizationTagConstraint`](/api/graphql/v1/types/objects/organization-tag-constraint.mdx) [`OrganizationTagConstraintLeaf`](/api/graphql/v1/types/objects/organization-tag-constraint-leaf.mdx) [`Project`](/api/graphql/v1/types/objects/project.mdx) [`ProjectLeaf`](/api/graphql/v1/types/objects/project-leaf.mdx) [`RemoteReference`](/api/graphql/v1/types/objects/remote-reference.mdx) [`Resource`](/api/graphql/v1/types/objects/resource.mdx) [`ServiceAccount`](/api/graphql/v1/types/objects/service-account.mdx) [`ServiceAccountViewer`](/api/graphql/v1/types/objects/service-account-viewer.mdx) [`ServiceAccountWithSecret`](/api/graphql/v1/types/objects/service-account-with-secret.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/scalars/id.mdx b/docs/api/graphql/v1/types/scalars/id.mdx
index f26bce5..f9c6079 100644
--- a/docs/api/graphql/v1/types/scalars/id.mdx
+++ b/docs/api/graphql/v1/types/scalars/id.mdx
@@ -58,4 +58,4 @@ scalar ID
### Member Of
-[`acceptGroupInvite`](/api/graphql/v1/operations/mutations/accept-group-invite.mdx) [`AccountIdentityViewer`](/api/graphql/v1/types/objects/account-identity-viewer.mdx) [`AccountViewer`](/api/graphql/v1/types/objects/account-viewer.mdx) [`addComponent`](/api/graphql/v1/operations/mutations/add-component.mdx) [`AvatarViewer`](/api/graphql/v1/types/objects/avatar-viewer.mdx) [`bundle`](/api/graphql/v1/operations/queries/bundle.mdx) [`Component`](/api/graphql/v1/types/objects/component.mdx) [`ComponentLeaf`](/api/graphql/v1/types/objects/component-leaf.mdx) [`createEnvironment`](/api/graphql/v1/operations/mutations/create-environment.mdx) [`createProject`](/api/graphql/v1/operations/mutations/create-project.mdx) [`deleteEnvironment`](/api/graphql/v1/operations/mutations/delete-environment.mdx) [`deleteProject`](/api/graphql/v1/operations/mutations/delete-project.mdx) [`deployment`](/api/graphql/v1/operations/queries/deployment.mdx) [`Deployment`](/api/graphql/v1/types/objects/deployment.mdx) [`DeploymentLeaf`](/api/graphql/v1/types/objects/deployment-leaf.mdx) [`deployments`](/api/graphql/v1/operations/queries/deployments.mdx) [`environment`](/api/graphql/v1/operations/queries/environment.mdx) [`Environment`](/api/graphql/v1/types/objects/environment.mdx) [`EnvironmentLeaf`](/api/graphql/v1/types/objects/environment-leaf.mdx) [`environments`](/api/graphql/v1/operations/queries/environments.mdx) [`IdFilter`](/api/graphql/v1/types/inputs/id-filter.mdx) [`instance`](/api/graphql/v1/operations/queries/instance.mdx) [`Instance`](/api/graphql/v1/types/objects/instance.mdx) [`InstanceLeaf`](/api/graphql/v1/types/objects/instance-leaf.mdx) [`instances`](/api/graphql/v1/operations/queries/instances.mdx) [`InviteGroupViewer`](/api/graphql/v1/types/objects/invite-group-viewer.mdx) [`InviteOrganizationViewer`](/api/graphql/v1/types/objects/invite-organization-viewer.mdx) [`InviteViewer`](/api/graphql/v1/types/objects/invite-viewer.mdx) [`Link`](/api/graphql/v1/types/objects/link.mdx) [`linkComponents`](/api/graphql/v1/operations/mutations/link-components.mdx) [`LinkComponentsInput`](/api/graphql/v1/types/inputs/link-components-input.mdx) [`LinkLeaf`](/api/graphql/v1/types/objects/link-leaf.mdx) [`LogoOrganization`](/api/graphql/v1/types/objects/logo-organization.mdx) [`Organization`](/api/graphql/v1/types/objects/organization.mdx) [`paramDimensions`](/api/graphql/v1/operations/queries/param-dimensions.mdx) [`project`](/api/graphql/v1/operations/queries/project.mdx) [`Project`](/api/graphql/v1/types/objects/project.mdx) [`ProjectLeaf`](/api/graphql/v1/types/objects/project-leaf.mdx) [`projects`](/api/graphql/v1/operations/queries/projects.mdx) [`removeComponent`](/api/graphql/v1/operations/mutations/remove-component.mdx) [`removeOrganizationLogo`](/api/graphql/v1/operations/mutations/remove-organization-logo.mdx) [`ServiceAccountViewer`](/api/graphql/v1/types/objects/service-account-viewer.mdx) [`setOrganizationLogo`](/api/graphql/v1/operations/mutations/set-organization-logo.mdx) [`unlinkComponents`](/api/graphql/v1/operations/mutations/unlink-components.mdx) [`updateEnvironment`](/api/graphql/v1/operations/mutations/update-environment.mdx) [`updateProject`](/api/graphql/v1/operations/mutations/update-project.mdx) [`ViewerOrganization`](/api/graphql/v1/types/objects/viewer-organization.mdx)
\ No newline at end of file
+[`acceptGroupInvite`](/api/graphql/v1/operations/mutations/accept-group-invite.mdx) [`AccessToken`](/api/graphql/v1/types/objects/access-token.mdx) [`AccessTokenWithValue`](/api/graphql/v1/types/objects/access-token-with-value.mdx) [`AccountIdentityViewer`](/api/graphql/v1/types/objects/account-identity-viewer.mdx) [`AccountViewer`](/api/graphql/v1/types/objects/account-viewer.mdx) [`addComponent`](/api/graphql/v1/operations/mutations/add-component.mdx) [`addServiceAccountToGroup`](/api/graphql/v1/operations/mutations/add-service-account-to-group.mdx) [`auditLog`](/api/graphql/v1/operations/queries/audit-log.mdx) [`AuditLog`](/api/graphql/v1/types/objects/audit-log.mdx) [`AuditLogLeaf`](/api/graphql/v1/types/objects/audit-log-leaf.mdx) [`auditLogs`](/api/graphql/v1/operations/queries/audit-logs.mdx) [`AvatarViewer`](/api/graphql/v1/types/objects/avatar-viewer.mdx) [`bundle`](/api/graphql/v1/operations/queries/bundle.mdx) [`Component`](/api/graphql/v1/types/objects/component.mdx) [`ComponentLeaf`](/api/graphql/v1/types/objects/component-leaf.mdx) [`createAccessToken`](/api/graphql/v1/operations/mutations/create-access-token.mdx) [`createEnvironment`](/api/graphql/v1/operations/mutations/create-environment.mdx) [`createGroup`](/api/graphql/v1/operations/mutations/create-group.mdx) [`createGroupInvitation`](/api/graphql/v1/operations/mutations/create-group-invitation.mdx) [`createIntegration`](/api/graphql/v1/operations/mutations/create-integration.mdx) [`createOrganizationTagConstraint`](/api/graphql/v1/operations/mutations/create-organization-tag-constraint.mdx) [`createProject`](/api/graphql/v1/operations/mutations/create-project.mdx) [`createServiceAccount`](/api/graphql/v1/operations/mutations/create-service-account.mdx) [`deleteEnvironment`](/api/graphql/v1/operations/mutations/delete-environment.mdx) [`deleteGroup`](/api/graphql/v1/operations/mutations/delete-group.mdx) [`deleteGroupInvitation`](/api/graphql/v1/operations/mutations/delete-group-invitation.mdx) [`deleteGroupMember`](/api/graphql/v1/operations/mutations/delete-group-member.mdx) [`deleteIntegration`](/api/graphql/v1/operations/mutations/delete-integration.mdx) [`deleteOrganizationMember`](/api/graphql/v1/operations/mutations/delete-organization-member.mdx) [`deleteOrganizationTagConstraint`](/api/graphql/v1/operations/mutations/delete-organization-tag-constraint.mdx) [`deleteProject`](/api/graphql/v1/operations/mutations/delete-project.mdx) [`deleteServiceAccount`](/api/graphql/v1/operations/mutations/delete-service-account.mdx) [`deployment`](/api/graphql/v1/operations/queries/deployment.mdx) [`Deployment`](/api/graphql/v1/types/objects/deployment.mdx) [`DeploymentLeaf`](/api/graphql/v1/types/objects/deployment-leaf.mdx) [`deployments`](/api/graphql/v1/operations/queries/deployments.mdx) [`environment`](/api/graphql/v1/operations/queries/environment.mdx) [`Environment`](/api/graphql/v1/types/objects/environment.mdx) [`EnvironmentLeaf`](/api/graphql/v1/types/objects/environment-leaf.mdx) [`environments`](/api/graphql/v1/operations/queries/environments.mdx) [`group`](/api/graphql/v1/operations/queries/group.mdx) [`Group`](/api/graphql/v1/types/objects/group.mdx) [`GroupInvitation`](/api/graphql/v1/types/objects/group-invitation.mdx) [`GroupLeaf`](/api/graphql/v1/types/objects/group-leaf.mdx) [`groups`](/api/graphql/v1/operations/queries/groups.mdx) [`IdFilter`](/api/graphql/v1/types/inputs/id-filter.mdx) [`instance`](/api/graphql/v1/operations/queries/instance.mdx) [`Instance`](/api/graphql/v1/types/objects/instance.mdx) [`InstanceLeaf`](/api/graphql/v1/types/objects/instance-leaf.mdx) [`instances`](/api/graphql/v1/operations/queries/instances.mdx) [`integration`](/api/graphql/v1/operations/queries/integration.mdx) [`Integration`](/api/graphql/v1/types/objects/integration.mdx) [`IntegrationActivation`](/api/graphql/v1/types/objects/integration-activation.mdx) [`IntegrationLeaf`](/api/graphql/v1/types/objects/integration-leaf.mdx) [`integrations`](/api/graphql/v1/operations/queries/integrations.mdx) [`integrationTypes`](/api/graphql/v1/operations/queries/integration-types.mdx) [`InviteGroupViewer`](/api/graphql/v1/types/objects/invite-group-viewer.mdx) [`InviteOrganizationViewer`](/api/graphql/v1/types/objects/invite-organization-viewer.mdx) [`InviteViewer`](/api/graphql/v1/types/objects/invite-viewer.mdx) [`Link`](/api/graphql/v1/types/objects/link.mdx) [`linkComponents`](/api/graphql/v1/operations/mutations/link-components.mdx) [`LinkComponentsInput`](/api/graphql/v1/types/inputs/link-components-input.mdx) [`LinkLeaf`](/api/graphql/v1/types/objects/link-leaf.mdx) [`LogoOrganization`](/api/graphql/v1/types/objects/logo-organization.mdx) [`organization`](/api/graphql/v1/operations/queries/organization.mdx) [`Organization`](/api/graphql/v1/types/objects/organization.mdx) [`OrganizationTagConstraint`](/api/graphql/v1/types/objects/organization-tag-constraint.mdx) [`OrganizationTagConstraintLeaf`](/api/graphql/v1/types/objects/organization-tag-constraint-leaf.mdx) [`paramDimensions`](/api/graphql/v1/operations/queries/param-dimensions.mdx) [`project`](/api/graphql/v1/operations/queries/project.mdx) [`Project`](/api/graphql/v1/types/objects/project.mdx) [`ProjectLeaf`](/api/graphql/v1/types/objects/project-leaf.mdx) [`projects`](/api/graphql/v1/operations/queries/projects.mdx) [`RemoteReference`](/api/graphql/v1/types/objects/remote-reference.mdx) [`removeComponent`](/api/graphql/v1/operations/mutations/remove-component.mdx) [`removeOrganizationLogo`](/api/graphql/v1/operations/mutations/remove-organization-logo.mdx) [`removeRemoteReference`](/api/graphql/v1/operations/mutations/remove-remote-reference.mdx) [`RemoveRemoteReferenceInput`](/api/graphql/v1/types/inputs/remove-remote-reference-input.mdx) [`removeServiceAccountFromGroup`](/api/graphql/v1/operations/mutations/remove-service-account-from-group.mdx) [`Resource`](/api/graphql/v1/types/objects/resource.mdx) [`revokeAccessToken`](/api/graphql/v1/operations/mutations/revoke-access-token.mdx) [`ServiceAccount`](/api/graphql/v1/types/objects/service-account.mdx) [`ServiceAccountViewer`](/api/graphql/v1/types/objects/service-account-viewer.mdx) [`ServiceAccountWithSecret`](/api/graphql/v1/types/objects/service-account-with-secret.mdx) [`setComponentPosition`](/api/graphql/v1/operations/mutations/set-component-position.mdx) [`setOrganizationLogo`](/api/graphql/v1/operations/mutations/set-organization-logo.mdx) [`setRemoteReference`](/api/graphql/v1/operations/mutations/set-remote-reference.mdx) [`SetRemoteReferenceInput`](/api/graphql/v1/types/inputs/set-remote-reference-input.mdx) [`unlinkComponents`](/api/graphql/v1/operations/mutations/unlink-components.mdx) [`updateEnvironment`](/api/graphql/v1/operations/mutations/update-environment.mdx) [`updateGroup`](/api/graphql/v1/operations/mutations/update-group.mdx) [`updateProject`](/api/graphql/v1/operations/mutations/update-project.mdx) [`V1AuditLogActor`](/api/graphql/v1/types/objects/v1-audit-log-actor.mdx) [`ViewerOrganization`](/api/graphql/v1/types/objects/viewer-organization.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/scalars/int.mdx b/docs/api/graphql/v1/types/scalars/int.mdx
index 0018db3..20d87d9 100644
--- a/docs/api/graphql/v1/types/scalars/int.mdx
+++ b/docs/api/graphql/v1/types/scalars/int.mdx
@@ -58,4 +58,4 @@ scalar Int
### Member Of
-[`AvatarViewer`](/api/graphql/v1/types/objects/avatar-viewer.mdx) [`Cursor`](/api/graphql/v1/types/inputs/cursor.mdx) [`Deployment`](/api/graphql/v1/types/objects/deployment.mdx) [`DeploymentLeaf`](/api/graphql/v1/types/objects/deployment-leaf.mdx) [`LogoOrganization`](/api/graphql/v1/types/objects/logo-organization.mdx)
\ No newline at end of file
+[`AvatarViewer`](/api/graphql/v1/types/objects/avatar-viewer.mdx) [`ComponentPosition`](/api/graphql/v1/types/objects/component-position.mdx) [`CreateAccessTokenInput`](/api/graphql/v1/types/inputs/create-access-token-input.mdx) [`Cursor`](/api/graphql/v1/types/inputs/cursor.mdx) [`Deployment`](/api/graphql/v1/types/objects/deployment.mdx) [`DeploymentLeaf`](/api/graphql/v1/types/objects/deployment-leaf.mdx) [`LogoOrganization`](/api/graphql/v1/types/objects/logo-organization.mdx) [`SetComponentPositionInput`](/api/graphql/v1/types/inputs/set-component-position-input.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/scalars/map.mdx b/docs/api/graphql/v1/types/scalars/map.mdx
new file mode 100644
index 0000000..29aeedf
--- /dev/null
+++ b/docs/api/graphql/v1/types/scalars/map.mdx
@@ -0,0 +1,61 @@
+---
+pagination_next: null
+pagination_prev: null
+hide_table_of_contents: true
+id: map
+title: Map
+---
+
+
+
+
+export const Bullet = () => <> ● >
+
+export const SpecifiedBy = (props) => <>Specification⎘>
+
+export const Badge = (props) => <>{props.text}>
+
+import { useState } from 'react';
+
+export const Details = ({ dataOpen, dataClose, children, startOpen = false }) => {
+ const [open, setOpen] = useState(startOpen);
+ return (
+
+ {
+ e.preventDefault();
+ setOpen((open) => !open);
+ }}
+ style={{ listStyle:'none' }}
+ >
+ {open ? dataOpen : dataClose}
+
+ {open && children}
+
+ );
+};
+
+
+
+
+
+
+
+
+A key-value map. Does not accept arrays, strings, or other JSON primitives.
+
+
+```graphql
+scalar Map
+```
+
+
+
+
+
+
+
+
+### Member Of
+
+[`AddComponentInput`](/api/graphql/v1/types/inputs/add-component-input.mdx) [`AuditLog`](/api/graphql/v1/types/objects/audit-log.mdx) [`AuditLogLeaf`](/api/graphql/v1/types/objects/audit-log-leaf.mdx) [`Component`](/api/graphql/v1/types/objects/component.mdx) [`ComponentLeaf`](/api/graphql/v1/types/objects/component-leaf.mdx) [`CreateEnvironmentInput`](/api/graphql/v1/types/inputs/create-environment-input.mdx) [`CreateIntegrationInput`](/api/graphql/v1/types/inputs/create-integration-input.mdx) [`CreateProjectInput`](/api/graphql/v1/types/inputs/create-project-input.mdx) [`Environment`](/api/graphql/v1/types/objects/environment.mdx) [`EnvironmentLeaf`](/api/graphql/v1/types/objects/environment-leaf.mdx) [`Instance`](/api/graphql/v1/types/objects/instance.mdx) [`InstanceLeaf`](/api/graphql/v1/types/objects/instance-leaf.mdx) [`Integration`](/api/graphql/v1/types/objects/integration.mdx) [`IntegrationActivation`](/api/graphql/v1/types/objects/integration-activation.mdx) [`IntegrationLeaf`](/api/graphql/v1/types/objects/integration-leaf.mdx) [`IntegrationTypeInfo`](/api/graphql/v1/types/objects/integration-type-info.mdx) [`Organization`](/api/graphql/v1/types/objects/organization.mdx) [`Project`](/api/graphql/v1/types/objects/project.mdx) [`ProjectLeaf`](/api/graphql/v1/types/objects/project-leaf.mdx) [`UpdateEnvironmentInput`](/api/graphql/v1/types/inputs/update-environment-input.mdx) [`UpdateProjectInput`](/api/graphql/v1/types/inputs/update-project-input.mdx)
\ No newline at end of file
diff --git a/docs/api/graphql/v1/types/scalars/string.mdx b/docs/api/graphql/v1/types/scalars/string.mdx
index 25887dd..68695ca 100644
--- a/docs/api/graphql/v1/types/scalars/string.mdx
+++ b/docs/api/graphql/v1/types/scalars/string.mdx
@@ -58,4 +58,4 @@ scalar String
### Member Of
-[`AccountIdentityViewer`](/api/graphql/v1/types/objects/account-identity-viewer.mdx) [`AccountViewer`](/api/graphql/v1/types/objects/account-viewer.mdx) [`AddComponentInput`](/api/graphql/v1/types/inputs/add-component-input.mdx) [`AvatarViewer`](/api/graphql/v1/types/objects/avatar-viewer.mdx) [`Bundle`](/api/graphql/v1/types/objects/bundle.mdx) [`BundleLeaf`](/api/graphql/v1/types/objects/bundle-leaf.mdx) [`Component`](/api/graphql/v1/types/objects/component.mdx) [`ComponentLeaf`](/api/graphql/v1/types/objects/component-leaf.mdx) [`CostSample`](/api/graphql/v1/types/objects/cost-sample.mdx) [`CreateEnvironmentInput`](/api/graphql/v1/types/inputs/create-environment-input.mdx) [`CreateOrganizationInput`](/api/graphql/v1/types/inputs/create-organization-input.mdx) [`CreateProjectInput`](/api/graphql/v1/types/inputs/create-project-input.mdx) [`Cursor`](/api/graphql/v1/types/inputs/cursor.mdx) [`DeletionConstraint`](/api/graphql/v1/types/objects/deletion-constraint.mdx) [`Deployment`](/api/graphql/v1/types/objects/deployment.mdx) [`DeploymentLeaf`](/api/graphql/v1/types/objects/deployment-leaf.mdx) [`deprecated`](/api/graphql/v1/types/directives/deprecated.mdx) [`Environment`](/api/graphql/v1/types/objects/environment.mdx) [`EnvironmentLeaf`](/api/graphql/v1/types/objects/environment-leaf.mdx) [`inputs`](/api/graphql/v1/types/directives/inputs.mdx) [`Instance`](/api/graphql/v1/types/objects/instance.mdx) [`InstanceLeaf`](/api/graphql/v1/types/objects/instance-leaf.mdx) [`InviteGroupViewer`](/api/graphql/v1/types/objects/invite-group-viewer.mdx) [`InviteOrganizationViewer`](/api/graphql/v1/types/objects/invite-organization-viewer.mdx) [`InviteViewer`](/api/graphql/v1/types/objects/invite-viewer.mdx) [`Link`](/api/graphql/v1/types/objects/link.mdx) [`LinkComponentsInput`](/api/graphql/v1/types/inputs/link-components-input.mdx) [`LinkLeaf`](/api/graphql/v1/types/objects/link-leaf.mdx) [`LogoOrganization`](/api/graphql/v1/types/objects/logo-organization.mdx) [`Organization`](/api/graphql/v1/types/objects/organization.mdx) [`PaginationCursor`](/api/graphql/v1/types/objects/pagination-cursor.mdx) [`ParamDimension`](/api/graphql/v1/types/objects/param-dimension.mdx) [`ParamDimensionFilter`](/api/graphql/v1/types/inputs/param-dimension-filter.mdx) [`Project`](/api/graphql/v1/types/objects/project.mdx) [`ProjectLeaf`](/api/graphql/v1/types/objects/project-leaf.mdx) [`Server`](/api/graphql/v1/types/objects/server.mdx) [`ServiceAccountViewer`](/api/graphql/v1/types/objects/service-account-viewer.mdx) [`specifiedBy`](/api/graphql/v1/types/directives/specified-by.mdx) [`SsoProvider`](/api/graphql/v1/types/objects/sso-provider.mdx) [`StringFilter`](/api/graphql/v1/types/inputs/string-filter.mdx) [`UpdateEnvironmentInput`](/api/graphql/v1/types/inputs/update-environment-input.mdx) [`UpdateProjectInput`](/api/graphql/v1/types/inputs/update-project-input.mdx) [`ValidationMessage`](/api/graphql/v1/types/objects/validation-message.mdx) [`ValidationOption`](/api/graphql/v1/types/objects/validation-option.mdx) [`ViewerOrganization`](/api/graphql/v1/types/objects/viewer-organization.mdx)
\ No newline at end of file
+[`AccessToken`](/api/graphql/v1/types/objects/access-token.mdx) [`AccessTokenWithValue`](/api/graphql/v1/types/objects/access-token-with-value.mdx) [`AccountIdentityViewer`](/api/graphql/v1/types/objects/account-identity-viewer.mdx) [`AccountViewer`](/api/graphql/v1/types/objects/account-viewer.mdx) [`AddComponentInput`](/api/graphql/v1/types/inputs/add-component-input.mdx) [`AuditLog`](/api/graphql/v1/types/objects/audit-log.mdx) [`AuditLogLeaf`](/api/graphql/v1/types/objects/audit-log-leaf.mdx) [`AvatarViewer`](/api/graphql/v1/types/objects/avatar-viewer.mdx) [`Bundle`](/api/graphql/v1/types/objects/bundle.mdx) [`BundleLeaf`](/api/graphql/v1/types/objects/bundle-leaf.mdx) [`Component`](/api/graphql/v1/types/objects/component.mdx) [`ComponentLeaf`](/api/graphql/v1/types/objects/component-leaf.mdx) [`CostSample`](/api/graphql/v1/types/objects/cost-sample.mdx) [`CreateAccessTokenInput`](/api/graphql/v1/types/inputs/create-access-token-input.mdx) [`CreateEnvironmentInput`](/api/graphql/v1/types/inputs/create-environment-input.mdx) [`CreateGroupInput`](/api/graphql/v1/types/inputs/create-group-input.mdx) [`createGroupInvitation`](/api/graphql/v1/operations/mutations/create-group-invitation.mdx) [`CreateOrganizationInput`](/api/graphql/v1/types/inputs/create-organization-input.mdx) [`CreateOrganizationTagConstraintInput`](/api/graphql/v1/types/inputs/create-organization-tag-constraint-input.mdx) [`CreateProjectInput`](/api/graphql/v1/types/inputs/create-project-input.mdx) [`CreateServiceAccountInput`](/api/graphql/v1/types/inputs/create-service-account-input.mdx) [`Cursor`](/api/graphql/v1/types/inputs/cursor.mdx) [`DeletedOrganizationMember`](/api/graphql/v1/types/objects/deleted-organization-member.mdx) [`deleteGroupInvitation`](/api/graphql/v1/operations/mutations/delete-group-invitation.mdx) [`deleteGroupMember`](/api/graphql/v1/operations/mutations/delete-group-member.mdx) [`deleteOrganizationMember`](/api/graphql/v1/operations/mutations/delete-organization-member.mdx) [`DeletionConstraint`](/api/graphql/v1/types/objects/deletion-constraint.mdx) [`Deployment`](/api/graphql/v1/types/objects/deployment.mdx) [`DeploymentLeaf`](/api/graphql/v1/types/objects/deployment-leaf.mdx) [`deprecated`](/api/graphql/v1/types/directives/deprecated.mdx) [`Environment`](/api/graphql/v1/types/objects/environment.mdx) [`EnvironmentLeaf`](/api/graphql/v1/types/objects/environment-leaf.mdx) [`Group`](/api/graphql/v1/types/objects/group.mdx) [`GroupInvitation`](/api/graphql/v1/types/objects/group-invitation.mdx) [`GroupLeaf`](/api/graphql/v1/types/objects/group-leaf.mdx) [`GroupMember`](/api/graphql/v1/types/objects/group-member.mdx) [`inputs`](/api/graphql/v1/types/directives/inputs.mdx) [`Instance`](/api/graphql/v1/types/objects/instance.mdx) [`InstanceDependency`](/api/graphql/v1/types/objects/instance-dependency.mdx) [`InstanceLeaf`](/api/graphql/v1/types/objects/instance-leaf.mdx) [`InstanceResource`](/api/graphql/v1/types/objects/instance-resource.mdx) [`Integration`](/api/graphql/v1/types/objects/integration.mdx) [`IntegrationActivation`](/api/graphql/v1/types/objects/integration-activation.mdx) [`IntegrationLeaf`](/api/graphql/v1/types/objects/integration-leaf.mdx) [`IntegrationTypeInfo`](/api/graphql/v1/types/objects/integration-type-info.mdx) [`InviteGroupViewer`](/api/graphql/v1/types/objects/invite-group-viewer.mdx) [`InviteOrganizationViewer`](/api/graphql/v1/types/objects/invite-organization-viewer.mdx) [`InviteViewer`](/api/graphql/v1/types/objects/invite-viewer.mdx) [`Link`](/api/graphql/v1/types/objects/link.mdx) [`LinkComponentsInput`](/api/graphql/v1/types/inputs/link-components-input.mdx) [`LinkLeaf`](/api/graphql/v1/types/objects/link-leaf.mdx) [`LogoOrganization`](/api/graphql/v1/types/objects/logo-organization.mdx) [`Organization`](/api/graphql/v1/types/objects/organization.mdx) [`OrganizationTagConstraint`](/api/graphql/v1/types/objects/organization-tag-constraint.mdx) [`OrganizationTagConstraintLeaf`](/api/graphql/v1/types/objects/organization-tag-constraint-leaf.mdx) [`PaginationCursor`](/api/graphql/v1/types/objects/pagination-cursor.mdx) [`ParamDimension`](/api/graphql/v1/types/objects/param-dimension.mdx) [`ParamDimensionFilter`](/api/graphql/v1/types/inputs/param-dimension-filter.mdx) [`Project`](/api/graphql/v1/types/objects/project.mdx) [`ProjectLeaf`](/api/graphql/v1/types/objects/project-leaf.mdx) [`RemoteReference`](/api/graphql/v1/types/objects/remote-reference.mdx) [`RemoveRemoteReferenceInput`](/api/graphql/v1/types/inputs/remove-remote-reference-input.mdx) [`Resource`](/api/graphql/v1/types/objects/resource.mdx) [`Server`](/api/graphql/v1/types/objects/server.mdx) [`ServiceAccount`](/api/graphql/v1/types/objects/service-account.mdx) [`ServiceAccountViewer`](/api/graphql/v1/types/objects/service-account-viewer.mdx) [`ServiceAccountWithSecret`](/api/graphql/v1/types/objects/service-account-with-secret.mdx) [`SetRemoteReferenceInput`](/api/graphql/v1/types/inputs/set-remote-reference-input.mdx) [`specifiedBy`](/api/graphql/v1/types/directives/specified-by.mdx) [`SsoProvider`](/api/graphql/v1/types/objects/sso-provider.mdx) [`StringFilter`](/api/graphql/v1/types/inputs/string-filter.mdx) [`UpdateEnvironmentInput`](/api/graphql/v1/types/inputs/update-environment-input.mdx) [`UpdateGroupInput`](/api/graphql/v1/types/inputs/update-group-input.mdx) [`UpdateProjectInput`](/api/graphql/v1/types/inputs/update-project-input.mdx) [`V1AuditLogActor`](/api/graphql/v1/types/objects/v1-audit-log-actor.mdx) [`ValidationMessage`](/api/graphql/v1/types/objects/validation-message.mdx) [`ValidationOption`](/api/graphql/v1/types/objects/validation-option.mdx) [`ViewerOrganization`](/api/graphql/v1/types/objects/viewer-organization.mdx)
\ No newline at end of file
diff --git a/schema/v1/schema.graphql b/schema/v1/schema.graphql
index ff3208b..0028302 100644
--- a/schema/v1/schema.graphql
+++ b/schema/v1/schema.graphql
@@ -151,11 +151,92 @@ type RootQueryType {
id: BundleId!
): Bundle
+ "List all groups in your organization. Returns a paginated list."
+ groups(
+ "Your organization ID"
+ organizationId: ID!
+
+ "How to sort results"
+ sort: GroupsSort
+
+ "Pagination cursor from a previous response"
+ cursor: Cursor
+ ): GroupsPage
+
+ "Get a single group by its ID."
+ group(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The group ID"
+ id: ID!
+ ): Group
+
+ "Get your organization and its settings."
+ organization(
+ "Your organization ID"
+ organizationId: ID!
+ ): Organization
+
"Get information about yourself (the authenticated user or service account)."
viewer: Viewer
"Get server info and available authentication methods. No authentication required."
server: Server!
+
+ "List all supported integration types. Use these to discover what integrations are available and their configuration schemas."
+ integrationTypes(
+ "Your organization ID"
+ organizationId: ID!
+ ): IntegrationTypesPage
+
+ "List your organization's configured integrations."
+ integrations(
+ "Your organization ID"
+ organizationId: ID!
+
+ "Filter results"
+ filter: IntegrationsFilter
+
+ "How to sort results"
+ sort: IntegrationsSort
+
+ "Pagination cursor from a previous response"
+ cursor: Cursor
+ ): IntegrationsPage
+
+ "Get a single integration by its type ID."
+ integration(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The integration type ID (e.g., 'aws-cost-and-usage-reports')"
+ id: ID!
+ ): Integration
+
+ "List audit log events for your organization. Returns newest first by default."
+ auditLogs(
+ "Your organization ID"
+ organizationId: ID!
+
+ "Filter results"
+ filter: AuditLogsFilter
+
+ "How to sort results"
+ sort: AuditLogsSort
+
+ "Pagination cursor from a previous response"
+ cursor: Cursor
+ ): AuditLogsPage
+
+ "Get a single audit log event by its ID."
+ auditLog(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The audit log event ID"
+ id: ID!
+ ): AuditLog
}
type RootMutationType {
@@ -267,6 +348,21 @@ type RootMutationType {
id: ID!
): LinkPayload
+ "Set the position of a component on the canvas."
+ setComponentPosition(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The project ID"
+ projectId: ID!
+
+ "The component ID"
+ id: ID!
+
+ "Set the position of a component on the canvas."
+ input: SetComponentPositionInput!
+ ): ComponentPayload @inputs(name: "setComponentPosition", schema: "\/graphql\/v1\/inputs\/setComponentPosition.json", ui: "\/graphql\/v1\/inputs\/setComponentPosition.ui.json")
+
"Accept a pending group invitation."
acceptGroupInvite(
"The invitation ID to accept"
@@ -282,6 +378,90 @@ type RootMutationType {
"Remove your profile avatar."
removeAccountAvatar: AvatarViewerPayload
+ "Create a new group in your organization."
+ createGroup(
+ "Your organization ID"
+ organizationId: ID!
+
+ "Create a new group. Groups control which projects members can access."
+ input: CreateGroupInput!
+ ): GroupPayload @inputs(name: "createGroup", schema: "\/graphql\/v1\/inputs\/createGroup.json", ui: "\/graphql\/v1\/inputs\/createGroup.ui.json")
+
+ "Update a group's name or description."
+ updateGroup(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The group ID to update"
+ id: ID!
+
+ "Update a group's name or description."
+ input: UpdateGroupInput!
+ ): GroupPayload @inputs(name: "updateGroup", schema: "\/graphql\/v1\/inputs\/updateGroup.json", ui: "\/graphql\/v1\/inputs\/updateGroup.ui.json")
+
+ "Delete a custom group. Predefined organization groups cannot be deleted."
+ deleteGroup(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The group ID to delete"
+ id: ID!
+ ): GroupPayload
+
+ "Invite a user to a group by email address."
+ createGroupInvitation(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The group ID to invite the user to"
+ groupId: ID!
+
+ "Email address of the user to invite"
+ email: String!
+ ): GroupInvitationPayload
+
+ "Remove a pending invitation from a group."
+ deleteGroupInvitation(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The group ID"
+ groupId: ID!
+
+ "Email address of the invitation to remove"
+ email: String!
+ ): GroupInvitationPayload
+
+ "Remove a member from a group."
+ deleteGroupMember(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The group ID"
+ groupId: ID!
+
+ "Email address of the member to remove"
+ email: String!
+ ): GroupMemberPayload
+
+ "Create a new tag constraint in your organization."
+ createOrganizationTagConstraint(
+ "Your organization ID"
+ organizationId: ID!
+
+ "Define a structural tag constraint for your organization. Tag constraints control which tags can be set on resources at each level of the hierarchy."
+ input: CreateOrganizationTagConstraintInput!
+ ): OrganizationTagConstraintPayload @inputs(name: "createOrganizationTagConstraint", schema: "\/graphql\/v1\/inputs\/createOrganizationTagConstraint.json", ui: "\/graphql\/v1\/inputs\/createOrganizationTagConstraint.ui.json")
+
+ "Delete a tag constraint from your organization."
+ deleteOrganizationTagConstraint(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The tag constraint ID to delete"
+ id: ID!
+ ): OrganizationTagConstraintPayload
+
"Create a new organization. You become the owner and first admin."
createOrganization(
"Create a new organization. An organization is the top-level container for all your projects, environments, and infrastructure resources."
@@ -297,11 +477,668 @@ type RootMutationType {
logo: Upload!
): LogoOrganizationPayload
- "Remove your organization's logo."
- removeOrganizationLogo(
- "Your organization ID"
- organizationId: ID!
- ): LogoOrganizationPayload
+ "Remove your organization's logo."
+ removeOrganizationLogo(
+ "Your organization ID"
+ organizationId: ID!
+ ): LogoOrganizationPayload
+
+ "Remove a member from the organization. Deletes all group memberships and pending invitations."
+ deleteOrganizationMember(
+ "Your organization ID"
+ organizationId: ID!
+
+ "Email address of the member to remove"
+ email: String!
+ ): DeletedOrganizationMemberPayload
+
+ "Create and activate an integration for your organization."
+ createIntegration(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The integration type to configure (e.g., 'aws-cost-and-usage-reports')"
+ id: ID!
+
+ "Create and activate an integration for your organization. The config and auth payloads must conform to the integration type's configSchema and authSchema respectively."
+ input: CreateIntegrationInput!
+ ): IntegrationActivationPayload @inputs(name: "createIntegration", schema: "\/graphql\/v1\/inputs\/createIntegration.json", ui: "\/graphql\/v1\/inputs\/createIntegration.ui.json")
+
+ "Delete an integration. This disables it first, then removes the configuration."
+ deleteIntegration(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The integration type ID to delete"
+ id: ID!
+ ): IntegrationPayload
+
+ "Create a scoped, time-limited access token. The token value is only returned in this response."
+ createAccessToken(
+ "Your organization ID"
+ organizationId: ID!
+
+ "Create a scoped, time-limited access token for API authentication."
+ input: CreateAccessTokenInput!
+ ): AccessTokenWithValuePayload @inputs(name: "createAccessToken", schema: "\/graphql\/v1\/inputs\/createAccessToken.json", ui: "\/graphql\/v1\/inputs\/createAccessToken.ui.json")
+
+ "Revoke an access token. The token immediately stops working but the record is preserved for audit."
+ revokeAccessToken(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The access token ID to revoke"
+ id: ID!
+ ): AccessTokenPayload
+
+ "Create a new service account. The secret token is only returned in this response."
+ createServiceAccount(
+ "Your organization ID"
+ organizationId: ID!
+
+ "Create a new service account for programmatic API access."
+ input: CreateServiceAccountInput!
+ ): ServiceAccountWithSecretPayload @inputs(name: "createServiceAccount", schema: "\/graphql\/v1\/inputs\/createServiceAccount.json", ui: "\/graphql\/v1\/inputs\/createServiceAccount.ui.json")
+
+ "Delete a service account. This action cannot be undone."
+ deleteServiceAccount(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The service account ID to delete"
+ id: ID!
+ ): ServiceAccountPayload
+
+ "Add a service account to a group, granting it the group's access level."
+ addServiceAccountToGroup(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The service account ID"
+ serviceAccountId: ID!
+
+ "The group ID to add the service account to"
+ groupId: ID!
+ ): ServiceAccountGroupPayload
+
+ "Remove a service account from a group."
+ removeServiceAccountFromGroup(
+ "Your organization ID"
+ organizationId: ID!
+
+ "The service account ID"
+ serviceAccountId: ID!
+
+ "The group ID to remove the service account from"
+ groupId: ID!
+ ): ServiceAccountGroupPayload
+
+ """
+ Set a remote reference on an instance.
+
+ Links an instance's resource field to a resource from another project or
+ an imported resource. The instance must not be in a provisioned or failed state.
+ """
+ setRemoteReference(
+ "Your organization ID"
+ organizationId: ID!
+
+ "Link an instance's resource field to a resource from another project or an imported resource. The instance must not be in a provisioned or failed state."
+ input: SetRemoteReferenceInput!
+ ): RemoteReferencePayload @inputs(name: "setRemoteReference", schema: "\/graphql\/v1\/inputs\/setRemoteReference.json", ui: "\/graphql\/v1\/inputs\/setRemoteReference.ui.json")
+
+ """
+ Remove a remote reference from an instance.
+
+ The reference can only be removed if no provisioned instances are connected
+ through it. Removing the last remote reference resets the instance status
+ from EXTERNAL back to INITIALIZED.
+ """
+ removeRemoteReference(
+ "Your organization ID"
+ organizationId: ID!
+
+ "Remove a remote reference from an instance. The reference can only be removed if no provisioned instances are connected through it."
+ input: RemoveRemoteReferenceInput!
+ ): RemoteReferencePayload @inputs(name: "removeRemoteReference", schema: "\/graphql\/v1\/inputs\/removeRemoteReference.json", ui: "\/graphql\/v1\/inputs\/removeRemoteReference.ui.json")
+}
+
+"Link an instance's resource field to a resource from another project or an imported resource. The instance must not be in a provisioned or failed state."
+input SetRemoteReferenceInput {
+ "The resource field to assign the reference to"
+ field: String!
+
+ "The instance to set the remote reference on"
+ instanceId: ID!
+
+ "The resource to reference — either a UUID for imported resources or 'instance.field' for provisioned resources"
+ resourceId: ID!
+}
+
+"Remove a remote reference from an instance. The reference can only be removed if no provisioned instances are connected through it."
+input RemoveRemoteReferenceInput {
+ "The resource field to remove the reference from"
+ field: String!
+
+ "The instance the reference belongs to"
+ instanceId: ID!
+}
+
+"A remote reference linking an instance to an external resource."
+type RemoteReference {
+ "Unique identifier"
+ id: ID!
+
+ "The resource field this reference is assigned to"
+ field: String!
+
+ "When this remote reference was created (UTC)"
+ createdAt: DateTime!
+
+ "When this remote reference was last modified (UTC)"
+ updatedAt: DateTime!
+
+ "The external resource this reference points to."
+ resource: Resource!
+}
+
+type RemoteReferencePayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: RemoteReference
+}
+
+"A service account with its full details."
+type ServiceAccount {
+ "Service account identifier"
+ id: ID!
+
+ "Service account name"
+ name: String!
+
+ "What this service account is for"
+ description: String
+
+ "When this service account was created (UTC)"
+ createdAt: DateTime!
+
+ "When this service account was last modified (UTC)"
+ updatedAt: DateTime!
+}
+
+"A service account with its secret token. The secret is only visible on creation."
+type ServiceAccountWithSecret {
+ "Service account identifier"
+ id: ID!
+
+ "Service account name"
+ name: String!
+
+ "What this service account is for"
+ description: String
+
+ "Secret token for authentication. Only returned on creation."
+ secret: String!
+
+ "When this service account was created (UTC)"
+ createdAt: DateTime!
+
+ "When this service account was last modified (UTC)"
+ updatedAt: DateTime!
+}
+
+type ServiceAccountPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: ServiceAccount
+}
+
+type ServiceAccountWithSecretPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: ServiceAccountWithSecret
+}
+
+type ServiceAccountGroupPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: ServiceAccount
+}
+
+"Create a new service account for programmatic API access."
+input CreateServiceAccountInput {
+ "What this service account is used for"
+ description: String
+
+ "A human-readable name for the service account"
+ name: String!
+}
+
+"An access token with the raw token value. Only returned on creation."
+type AccessTokenWithValue {
+ "Access token identifier"
+ id: ID!
+
+ "Label for this token"
+ name: String!
+
+ "The full token value. Store securely — this is the only time it is shown."
+ token: String!
+
+ "Short prefix for identifying this token in lists (e.g., md_a1b2c3d4)"
+ prefix: String!
+
+ "Permission scopes granted to this token"
+ scopes: [String!]!
+
+ "When this token expires (UTC)"
+ expiresAt: DateTime!
+
+ "When this token was created (UTC)"
+ createdAt: DateTime!
+}
+
+"An access token's metadata. Does not include the raw token value."
+type AccessToken {
+ "Access token identifier"
+ id: ID!
+
+ "Label for this token"
+ name: String!
+
+ "Short prefix for identifying this token (e.g., md_a1b2c3d4)"
+ prefix: String!
+
+ "Permission scopes granted to this token"
+ scopes: [String!]!
+
+ "When this token expires (UTC)"
+ expiresAt: DateTime!
+
+ "When this token was revoked, if applicable (UTC)"
+ revokedAt: DateTime
+
+ "When this token was last used for authentication (UTC)"
+ lastUsedAt: DateTime
+
+ "When this token was created (UTC)"
+ createdAt: DateTime!
+}
+
+type AccessTokenWithValuePayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: AccessTokenWithValue
+}
+
+type AccessTokenPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: AccessToken
+}
+
+"Create a scoped, time-limited access token for API authentication."
+input CreateAccessTokenInput {
+ "How many minutes until this token expires. Defaults to 60 (1 hour). Maximum ~5,256,000 (10 years)."
+ expiresInMinutes: Int
+
+ "A label to identify this token (e.g., 'CI deploy key')"
+ name: String!
+
+ "Permission scopes. At least one required. Currently only [\"*\"] (full access) is supported."
+ scopes: [String!]!
+
+ "Create the token on behalf of this service account. Omit to create for the authenticated identity."
+ serviceAccountId: String
+}
+
+"The type of actor that performed an action."
+enum AuditLogActorType {
+ "Human user account"
+ ACCOUNT
+
+ "Service account (API key)"
+ SERVICE_ACCOUNT
+
+ "Automated deployment"
+ DEPLOYMENT
+
+ "System action or legacy event"
+ SYSTEM
+}
+
+"Available fields for sorting audit logs."
+enum AuditLogsSortField {
+ "Sort by when the event occurred"
+ OCCURRED_AT
+
+ "Sort by event type"
+ TYPE
+}
+
+"Sorting options for the audit logs list."
+input AuditLogsSort {
+ "Which field to sort by"
+ field: AuditLogsSortField!
+
+ "Sort direction"
+ order: SortOrder!
+}
+
+"Filter by the type of actor that performed the action."
+input AuditLogActorTypeFilter {
+ "Exact match"
+ eq: AuditLogActorType
+
+ "Match any of these actor types"
+ in: [AuditLogActorType!]
+}
+
+"Filter which audit logs to return."
+input AuditLogsFilter {
+ "Filter by when the event occurred"
+ occurredAt: DatetimeFilter
+
+ "Filter by event type (e.g., 'project.created')"
+ type: StringFilter
+
+ "Filter by who performed the action"
+ actorType: AuditLogActorTypeFilter
+
+ "Filter by the actor's ID"
+ actorId: IdFilter
+}
+
+"The actor that performed an audit-logged action."
+type V1AuditLogActor {
+ "Actor's unique identifier"
+ id: ID!
+
+ "What kind of actor this is"
+ type: AuditLogActorType!
+
+ "Display name (email for users, name for service accounts)"
+ name: String!
+}
+
+"An audit log event returned in list results."
+type AuditLogLeaf {
+ "Unique event identifier"
+ id: ID!
+
+ "When the event occurred (UTC)"
+ occurredAt: DateTime!
+
+ "Event type (e.g., 'project.created')"
+ type: String!
+
+ "Where the event originated"
+ source: String!
+
+ "Resource the event applies to (MRI format)"
+ subject: String
+
+ "Event payload with context and resource details"
+ data: Map
+
+ "Who performed this action"
+ actor: V1AuditLogActor!
+}
+
+"An audit log event with full details."
+type AuditLog {
+ "Unique event identifier"
+ id: ID!
+
+ "When the event occurred (UTC)"
+ occurredAt: DateTime!
+
+ "Event type (e.g., 'project.created')"
+ type: String!
+
+ "Where the event originated"
+ source: String!
+
+ "Resource the event applies to (MRI format)"
+ subject: String
+
+ "Event payload with context and resource details"
+ data: Map
+
+ "Who performed this action"
+ actor: V1AuditLogActor!
+}
+
+type AuditLogsPage {
+ "Pagination cursors"
+ cursor: PaginationCursor!
+
+ "A list of type audit_log_leaf."
+ items: [AuditLogLeaf]
+}
+
+"The current status of an integration."
+enum IntegrationStatus {
+ "Integration is inactive"
+ DISABLED
+
+ "Integration is being deactivated"
+ DISABLING
+
+ "Integration is being activated"
+ ENABLING
+
+ "Integration is active and running"
+ ENABLED
+}
+
+"Available fields for sorting integrations."
+enum IntegrationsSortField {
+ "Sort by when the integration was created"
+ CREATED_AT
+
+ "Sort alphabetically by integration type"
+ ID
+}
+
+"Filter for integration status."
+input IntegrationStatusFilter {
+ "Exact match"
+ eq: IntegrationStatus
+
+ "Match any of these statuses"
+ in: [IntegrationStatus!]
+}
+
+"Filter options for the integrations list."
+input IntegrationsFilter {
+ "Filter by integration type ID"
+ id: StringFilter
+
+ "Filter by status"
+ status: IntegrationStatusFilter
+}
+
+"Sorting options for the integrations list."
+input IntegrationsSort {
+ "Which field to sort by"
+ field: IntegrationsSortField!
+
+ "Sort direction"
+ order: SortOrder!
+}
+
+"Create and activate an integration for your organization. The config and auth payloads must conform to the integration type's configSchema and authSchema respectively."
+input CreateIntegrationInput {
+ "Authentication credentials. Must conform to the integration type's authSchema. Write-only — not returned in queries."
+ auth: Map!
+
+ "Integration-specific configuration. Must conform to the integration type's configSchema."
+ config: Map!
+}
+
+"A supported integration type that can be configured for your organization."
+type IntegrationTypeInfo {
+ "Unique identifier for this integration type"
+ id: String!
+
+ "Display name"
+ name: String!
+
+ "What this integration does"
+ description: String
+
+ "URL to the documentation"
+ docs: String!
+
+ "JSON Schema for the `config` field when creating this integration"
+ configSchema: Map!
+
+ "JSON Schema for the `auth` field when creating this integration"
+ authSchema: Map!
+}
+
+type IntegrationTypesPage {
+ "Pagination cursors"
+ cursor: PaginationCursor!
+
+ "A list of type integration_type_info."
+ items: [IntegrationTypeInfo]
+}
+
+"A configured integration returned in list results."
+type IntegrationLeaf {
+ "Integration type identifier (unique per organization)"
+ id: ID!
+
+ "The type of integration"
+ integrationTypeId: String!
+
+ "Integration-specific configuration"
+ config: Map!
+
+ "Current status"
+ status: IntegrationStatus!
+
+ "When this integration was created (UTC)"
+ createdAt: DateTime!
+
+ "When this integration was last modified (UTC)"
+ updatedAt: DateTime!
+
+ "When this integration will next execute"
+ nextRunAt: DateTime
+}
+
+"A configured integration with its full details."
+type Integration {
+ "Integration type identifier (unique per organization)"
+ id: ID!
+
+ "The type of integration"
+ integrationTypeId: String!
+
+ "Integration-specific configuration"
+ config: Map!
+
+ "Current status"
+ status: IntegrationStatus!
+
+ "When this integration was created (UTC)"
+ createdAt: DateTime!
+
+ "When this integration was last modified (UTC)"
+ updatedAt: DateTime!
+
+ "When this integration will next execute"
+ nextRunAt: DateTime
+}
+
+"A newly created integration with setup instructions."
+type IntegrationActivation {
+ "Integration type identifier"
+ id: ID!
+
+ "The type of integration"
+ integrationTypeId: String!
+
+ "Integration-specific configuration"
+ config: Map!
+
+ "Current status"
+ status: IntegrationStatus!
+
+ "When this integration was created (UTC)"
+ createdAt: DateTime!
+
+ "When this integration was last modified (UTC)"
+ updatedAt: DateTime!
+
+ "When this integration will next execute"
+ nextRunAt: DateTime
+
+ "Setup instructions for this integration. May contain sensitive credentials — store securely."
+ instructions: String!
+}
+
+type IntegrationsPage {
+ "Pagination cursors"
+ cursor: PaginationCursor!
+
+ "A list of type integration_leaf."
+ items: [IntegrationLeaf]
+}
+
+type IntegrationPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: Integration
+}
+
+type IntegrationActivationPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: IntegrationActivation
}
"How this Massdriver instance is deployed."
@@ -358,6 +1195,267 @@ type Server {
emailAuthMethods: [EmailAuthMethod]
}
+"The resource level where a tag constraint applies."
+enum TagConstraintScope {
+ "Tag is set on the organization"
+ ORGANIZATION
+
+ "Tag is set on projects"
+ PROJECT
+
+ "Tag is set on environments"
+ ENVIRONMENT
+
+ "Tag is set on components"
+ COMPONENT
+
+ "Tag is set on instances"
+ INSTANCE
+}
+
+"Available fields for sorting tag constraints."
+enum OrganizationTagConstraintsSortField {
+ "Sort alphabetically by tag key"
+ KEY
+
+ "Sort by resource scope level"
+ SCOPE
+
+ "Sort by when the constraint was created"
+ CREATED_AT
+}
+
+"Sorting options for the tag constraints list."
+input OrganizationTagConstraintsSort {
+ "Which field to sort by"
+ field: OrganizationTagConstraintsSortField!
+
+ "Sort direction"
+ order: SortOrder!
+}
+
+"Define a structural tag constraint for your organization. Tag constraints control which tags can be set on resources at each level of the hierarchy."
+input CreateOrganizationTagConstraintInput {
+ "The tag key name. Must start with a letter. Keys starting with MD_ are reserved."
+ key: String!
+
+ "Whether this tag must be set when creating a resource at the specified scope."
+ required: Boolean
+
+ "The resource level where this tag is set. Values cascade to child resources."
+ scope: TagConstraintScope!
+}
+
+"A tag constraint returned in list results."
+type OrganizationTagConstraintLeaf {
+ "Unique identifier"
+ id: ID!
+
+ "The tag key name (e.g. TEAM, DOMAIN)"
+ key: String!
+
+ "Resource level where this tag is set"
+ scope: TagConstraintScope!
+
+ "Whether this tag must be set when creating a resource at the specified scope"
+ required: Boolean!
+
+ "When this constraint was created (UTC)"
+ createdAt: DateTime!
+
+ "When this constraint was last modified (UTC)"
+ updatedAt: DateTime!
+}
+
+"A tag constraint with its full details."
+type OrganizationTagConstraint {
+ "Unique identifier"
+ id: ID!
+
+ "The tag key name (e.g. TEAM, DOMAIN)"
+ key: String!
+
+ "Resource level where this tag is set"
+ scope: TagConstraintScope!
+
+ "Whether this tag must be set when creating a resource at the specified scope"
+ required: Boolean!
+
+ "When this constraint was created (UTC)"
+ createdAt: DateTime!
+
+ "When this constraint was last modified (UTC)"
+ updatedAt: DateTime!
+}
+
+type OrganizationTagConstraintsPage {
+ "Pagination cursors"
+ cursor: PaginationCursor!
+
+ "A list of type organization_tag_constraint_leaf."
+ items: [OrganizationTagConstraintLeaf]
+}
+
+type OrganizationTagConstraintPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: OrganizationTagConstraint
+}
+
+"The role of a group within an organization."
+enum GroupRole {
+ "Full administrative access to the organization"
+ ORGANIZATION_ADMIN
+
+ "Read-only access to the organization"
+ ORGANIZATION_VIEWER
+
+ "Custom role with project-level access grants"
+ CUSTOM
+}
+
+"Available fields for sorting groups."
+enum GroupsSortField {
+ "Sort alphabetically by group name"
+ NAME
+
+ "Sort by when the group was created"
+ CREATED_AT
+}
+
+"Sorting options for the groups list."
+input GroupsSort {
+ "Which field to sort by"
+ field: GroupsSortField!
+
+ "Sort direction"
+ order: SortOrder!
+}
+
+"Create a new group. Groups control which projects members can access."
+input CreateGroupInput {
+ "What this group is for"
+ description: String
+
+ "A human-readable name for the group"
+ name: String!
+}
+
+"Update a group's name or description."
+input UpdateGroupInput {
+ "What this group is for"
+ description: String
+
+ "A human-readable name for the group"
+ name: String!
+}
+
+"A group returned in list results."
+type GroupLeaf {
+ "Group identifier"
+ id: ID!
+
+ "Group name"
+ name: String!
+
+ "What this group is for"
+ description: String
+
+ "Access level within the organization"
+ role: GroupRole!
+
+ "When this group was created (UTC)"
+ createdAt: DateTime!
+
+ "When this group was last modified (UTC)"
+ updatedAt: DateTime!
+}
+
+"A group with its full details."
+type Group {
+ "Group identifier"
+ id: ID!
+
+ "Group name"
+ name: String!
+
+ "What this group is for"
+ description: String
+
+ "Access level within the organization"
+ role: GroupRole!
+
+ "When this group was created (UTC)"
+ createdAt: DateTime!
+
+ "When this group was last modified (UTC)"
+ updatedAt: DateTime!
+}
+
+"An invitation to join a group."
+type GroupInvitation {
+ "Invitation identifier"
+ id: ID!
+
+ "Email address of the invited user"
+ email: String!
+
+ "When the invitation was sent (UTC)"
+ createdAt: DateTime!
+}
+
+"A group member."
+type GroupMember {
+ "Email address of the member"
+ email: String!
+}
+
+type GroupsPage {
+ "Pagination cursors"
+ cursor: PaginationCursor!
+
+ "A list of type group_leaf."
+ items: [GroupLeaf]
+}
+
+type GroupPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: Group
+}
+
+type GroupInvitationPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: GroupInvitation
+}
+
+type GroupMemberPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: GroupMember
+}
+
"Create a new organization. An organization is the top-level container for all your projects, environments, and infrastructure resources."
input CreateOrganizationInput {
"A short, memorable identifier for looking up this organization in the API and CLI. Choose something concise and meaningful—human-readable, not a UUID. Max 20 characters, lowercase alphanumeric only (a-z, 0-9). Immutable after creation."
@@ -367,7 +1465,7 @@ input CreateOrganizationInput {
name: String!
}
-"An organization with full details."
+"An organization with its full details and related resources."
type Organization {
id: ID!
@@ -382,6 +1480,27 @@ type Organization {
"The organization's logo image."
logo: LogoOrganization
+
+ "Tag constraints that define the structural tags for this organization."
+ tagConstraints(
+ "How to sort results"
+ sort: OrganizationTagConstraintsSort
+
+ "Pagination cursor from a previous response"
+ cursor: Cursor
+ ): OrganizationTagConstraintsPage
+
+ "JSON Schema describing the tag fields for a given resource scope."
+ tagSchema(
+ "Resource level (e.g. PROJECT, ENVIRONMENT)"
+ scope: TagConstraintScope!
+ ): Map!
+}
+
+"A deleted organization member."
+type DeletedOrganizationMember {
+ "Email address of the removed member"
+ email: String!
}
type OrganizationPayload {
@@ -395,6 +1514,17 @@ type OrganizationPayload {
result: Organization
}
+type DeletedOrganizationMemberPayload {
+ "Indicates if the mutation completed successfully or not."
+ successful: Boolean!
+
+ "A list of failed validations. May be blank or null if mutation succeeded."
+ messages: [ValidationMessage]
+
+ "The object created\/updated\/deleted by the mutation. May be null if mutation failed."
+ result: DeletedOrganizationMember
+}
+
"An organization's logo image."
type LogoOrganization {
id: ID!
@@ -504,7 +1634,7 @@ input ViewerOrganizationsSort {
order: SortOrder!
}
-"Sorting options for identities list."
+"Sorting options for the identities list."
input IdentitiesSort {
"Which field to sort by"
field: IdentitiesSortField!
@@ -513,7 +1643,7 @@ input IdentitiesSort {
order: SortOrder!
}
-"Sorting options for invites list."
+"Sorting options for the invites list."
input InvitesSort {
"Which field to sort by"
field: InvitesSortField!
@@ -798,6 +1928,9 @@ input AddComponentInput {
"Name of the OCI repository for the bundle to add (e.g., 'aws-aurora-postgres')"
ociRepoName: OciRepoName!
+
+ "Key-value tags for this component. Keys and values must be strings. Must conform to the organization's tag constraints for the component scope."
+ tags: Map
}
"Create a link between two components in a project's blueprint. Links connect an output field on the source component to an input field on the destination component, establishing data flow between infrastructure resources."
@@ -821,6 +1954,24 @@ input LinkComponentsInput {
toVersion: VersionConstraint!
}
+"Set the position of a component on the canvas."
+input SetComponentPositionInput {
+ "Horizontal position in pixels"
+ x: Int!
+
+ "Vertical position in pixels"
+ y: Int!
+}
+
+"A component's position on the canvas."
+type ComponentPosition {
+ "Horizontal position in pixels"
+ x: Int!
+
+ "Vertical position in pixels"
+ y: Int!
+}
+
"A component returned in list results."
type ComponentLeaf {
id: ID!
@@ -828,9 +1979,15 @@ type ComponentLeaf {
"Display name"
name: String!
- "Component description"
+ "What this component is for"
description: String
+ "Tags assigned directly to this component"
+ tags: Map!
+
+ "Position on the canvas"
+ position: ComponentPosition
+
"When this component was created (UTC)"
createdAt: DateTime!
@@ -851,9 +2008,15 @@ type Component {
"Display name"
name: String!
- "Component description"
+ "What this component is for"
description: String
+ "Tags assigned directly to this component"
+ tags: Map!
+
+ "Position on the canvas"
+ position: ComponentPosition
+
"When this component was created (UTC)"
createdAt: DateTime!
@@ -1229,16 +2392,71 @@ input ParamDimensionsSort {
order: SortOrder!
}
+"An artifact produced or consumed by an instance."
+type Resource {
+ "Resource identifier (`package.field` for provisioned resources, UUID for imports)"
+ id: ID!
+
+ "Resource name"
+ name: String!
+
+ "Resource type (e.g., the artifact definition type)"
+ type: String
+
+ "When this resource was created (UTC)"
+ createdAt: DateTime!
+
+ "When this resource was last modified (UTC)"
+ updatedAt: DateTime!
+}
+
+"A resource keyed by the output handle that produced it."
+type InstanceResource {
+ "The output handle that produced this resource"
+ field: String!
+
+ "The resource artifact"
+ resource: Resource!
+}
+
+"A dependency keyed by the input handle that consumes it."
+type InstanceDependency {
+ "The input handle that consumes this resource"
+ field: String!
+
+ "The resource artifact"
+ resource: Resource!
+}
+
+type InstanceResourcesPage {
+ "Pagination cursors"
+ cursor: PaginationCursor!
+
+ "A list of type instance_resource."
+ items: [InstanceResource]
+}
+
+type InstanceDependenciesPage {
+ "Pagination cursors"
+ cursor: PaginationCursor!
+
+ "A list of type instance_dependency."
+ items: [InstanceDependency]
+}
+
"An instance returned in list results."
type InstanceLeaf {
id: ID!
- "Instance display name"
+ "Display name"
name: String!
"Current state of the instance"
status: InstanceStatus!
+ "Tags assigned directly to this instance"
+ tags: Map!
+
"Version constraint (e.g., '~1.0' or '1.2.3')"
version: String!
@@ -1251,6 +2469,18 @@ type InstanceLeaf {
"When this instance was last modified (UTC)"
updatedAt: DateTime!
+ "The actual version resolved from the version constraint, used for the next deployment."
+ resolvedVersion: String!
+
+ "The version last deployed to infrastructure. May differ from resolvedVersion if not yet deployed."
+ deployedVersion: String
+
+ "Newest version available for upgrade, or null if already on the latest matching version."
+ availableUpgrade: String
+
+ "Cloud provider costs for this instance."
+ cost: CostSummary!
+
"The environment this instance is deployed in."
environment: EnvironmentLeaf
@@ -1262,12 +2492,15 @@ type InstanceLeaf {
type Instance {
id: ID!
- "Instance display name"
+ "Display name"
name: String!
"Current state of the instance"
status: InstanceStatus!
+ "Tags assigned directly to this instance"
+ tags: Map!
+
"Version constraint (e.g., '~1.0' or '1.2.3')"
version: String!
@@ -1280,11 +2513,29 @@ type Instance {
"When this instance was last modified (UTC)"
updatedAt: DateTime!
+ "The actual version resolved from the version constraint, used for the next deployment."
+ resolvedVersion: String!
+
+ "The version last deployed to infrastructure. May differ from resolvedVersion if not yet deployed."
+ deployedVersion: String
+
+ "Newest version available for upgrade, or null if already on the latest matching version."
+ availableUpgrade: String
+
+ "Cloud provider costs for this instance."
+ cost: CostSummary!
+
"The environment this instance is deployed in."
environment: Environment
"The bundle version currently deployed."
bundle: Bundle
+
+ "Resources produced by this instance (its output artifacts)."
+ resources(cursor: Cursor): InstanceResourcesPage
+
+ "Dependencies consumed by this instance (artifacts from other instances wired via connections)."
+ dependencies(cursor: Cursor): InstanceDependenciesPage
}
type InstancesPage {
@@ -1340,6 +2591,9 @@ input CreateEnvironmentInput {
"A human-readable name for the environment"
name: String!
+
+ "Key-value tags for this environment. Keys and values must be strings. Must conform to the organization's tag constraints for the environment scope."
+ tags: Map
}
"Update an existing environment's name and description. The ID cannot be changed after creation."
@@ -1349,6 +2603,9 @@ input UpdateEnvironmentInput {
"A human-readable name for the environment"
name: String
+
+ "Key-value tags for this environment. Keys and values must be strings. Must conform to the organization's tag constraints for the environment scope."
+ tags: Map
}
"An environment returned in list results."
@@ -1361,6 +2618,9 @@ type EnvironmentLeaf {
"What this environment is for"
description: String
+ "Tags assigned directly to this environment"
+ tags: Map!
+
"When this environment was created (UTC)"
createdAt: DateTime!
@@ -1384,6 +2644,9 @@ type Environment {
"What this environment is for"
description: String
+ "Tags assigned directly to this environment"
+ tags: Map!
+
"When this environment was created (UTC)"
createdAt: DateTime!
@@ -1457,6 +2720,9 @@ input CreateProjectInput {
"A human-readable name for the project"
name: String!
+
+ "Key-value tags for this project. Keys and values must be strings. Must conform to the organization's tag constraints for the project scope."
+ tags: Map
}
"Update an existing project's name and description. The ID cannot be changed after creation."
@@ -1466,6 +2732,9 @@ input UpdateProjectInput {
"A human-readable name for the project"
name: String
+
+ "Key-value tags for this project. Keys and values must be strings. Must conform to the organization's tag constraints for the project scope."
+ tags: Map
}
"A project returned in list results."
@@ -1478,6 +2747,9 @@ type ProjectLeaf {
"What this project is for"
description: String
+ "Tags assigned directly to this project"
+ tags: Map!
+
"When this project was created (UTC)"
createdAt: DateTime!
@@ -1498,6 +2770,9 @@ type Project {
"What this project is for"
description: String
+ "Tags assigned directly to this project"
+ tags: Map!
+
"When this project was created (UTC)"
createdAt: DateTime!
@@ -1639,13 +2914,13 @@ The short name of an OCI repository in your organization's catalog.
"""
scalar OciRepoName
-"Reference to an OCI repository."
+"An OCI repository returned in list results."
type OciRepoLeaf {
"OCI repository name"
name: OciRepoName!
}
-"Reference to an OCI repository."
+"An OCI repository with its full details."
type OciRepo {
"OCI repository name"
name: OciRepoName!
@@ -1732,6 +3007,27 @@ input OciRepoNameFilter {
in: [OciRepoName!]
}
+"""
+Filter for datetime fields. All provided operators are combined with AND.
+Useful for date range queries.
+"""
+input DatetimeFilter {
+ "Exact match"
+ eq: DateTime
+
+ "After this date\/time"
+ gt: DateTime
+
+ "On or after this date\/time"
+ gte: DateTime
+
+ "Before this date\/time"
+ lt: DateTime
+
+ "On or before this date\/time"
+ lte: DateTime
+}
+
"Filter for instance status. All provided operators are combined with AND."
input InstanceStatusFilter {
"Exact match"
@@ -1796,6 +3092,9 @@ type PaginationCursor {
previous: String
}
+"A key-value map. Does not accept arrays, strings, or other JSON primitives."
+scalar Map
+
type ValidationOption {
"The name of a variable to be subsituted in a validation message template"
key: String!
diff --git a/vercel.json b/vercel.json
index f806fa4..58c63c0 100644
--- a/vercel.json
+++ b/vercel.json
@@ -54,6 +54,26 @@
"source": "/guides/self-hosted-install",
"destination": "/self-hosted/install",
"permanent": true
+ },
+ {
+ "source": "/integrations/overview",
+ "destination": "/reference/integrations/overview",
+ "permanent": true
+ },
+ {
+ "source": "/integrations/aws-cost-and-usage-reports",
+ "destination": "/reference/integrations/aws-cost-reports",
+ "permanent": true
+ },
+ {
+ "source": "/integrations/azure-cost-management-exports",
+ "destination": "/reference/integrations/azure-cost-management",
+ "permanent": true
+ },
+ {
+ "source": "/integrations/scim",
+ "destination": "/reference/integrations/scim",
+ "permanent": true
}
]
}