diff --git a/.gitmodules b/.gitmodules index b3e72e9d6..d124e3640 100644 --- a/.gitmodules +++ b/.gitmodules @@ -128,3 +128,8 @@ url = https://github.com/distilled-mirror/spec-mirror-modal.git ignore = dirty shallow = true +[submodule "packages/vanta/specs/spec-mirror-vanta"] + path = packages/vanta/specs/spec-mirror-vanta + url = https://github.com/distilled-mirror/spec-mirror-vanta.git + ignore = dirty + shallow = true diff --git a/packages/vanta/.generated-specs/auditor_api.json b/packages/vanta/.generated-specs/auditor_api.json new file mode 100644 index 000000000..cafdfb797 --- /dev/null +++ b/packages/vanta/.generated-specs/auditor_api.json @@ -0,0 +1,9842 @@ +{ + "smithy": "2.0", + "metadata": { + "suppressions": [ + { + "id": "HttpUriConflict", + "namespace": "*" + }, + { + "id": "HttpMethodSemantics", + "namespace": "*" + }, + { + "id": "UnreferencedShape", + "namespace": "*" + } + ] + }, + "shapes": { + "com.vanta.auditor_api#CreateAuditorRequest": { + "type": "structure", + "members": { + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the new user.", + "smithy.api#required": {} + } + }, + "givenName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "First name of the new user.", + "smithy.api#required": {} + } + }, + "familyName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Last name of the new user.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#Auditor": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "organizationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the organization.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the auditor.", + "smithy.api#required": {} + } + }, + "givenName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The given name (first name) of the auditor.", + "smithy.api#required": {} + } + }, + "familyName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The family name (last name) of the auditor.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#CreateAuditor": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#CreateAuditorRequest" + }, + "output": { + "target": "com.vanta.auditor_api#Auditor" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/auditors", + "code": 200 + }, + "smithy.api#documentation": "Create an auditor\n\nCreate an auditor in Vanta.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#ListAuditsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "changedSinceDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "changedSinceDate", + "smithy.api#documentation": "Includes all audits that have changed since changedSinceDate." + } + }, + "isActiveAudit": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "isActiveAudit", + "smithy.api#documentation": "Includes only audits with no audit report uploaded" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseAudit": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#Audit": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the audit.", + "smithy.api#required": {} + } + }, + "customerOrganizationName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The domain name of the customer organization being audited (e.g. vanta.com)", + "smithy.api#required": {} + } + }, + "customerDisplayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The human readable name of the customer organization being audited (e.g. Vanta)", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "customerOrganizationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The uuid of the customer organization being audited", + "smithy.api#required": {} + } + }, + "auditStartDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The start of the audit window. This is also when data collection for audit starts.", + "smithy.api#required": {} + } + }, + "auditEndDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The end of the audit window.", + "smithy.api#required": {} + } + }, + "earlyAccessStartsAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp at which auditors gain access to the audit. Occurs before the audit window begins", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "framework": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Legacy singular framework display name from the audit type. Incomplete for\na multi-framework audit — use `segments` for framework identity.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The display name for the audit. Returns the custom audit name if set,\notherwise returns the framework name.", + "smithy.api#required": {} + } + }, + "allowAuditorEmails": { + "target": "com.vanta.auditor_api#AuditAllowAuditorEmailsList", + "traits": { + "smithy.api#documentation": "Emails of auditors with access to audit", + "smithy.api#required": {} + } + }, + "allowAllAuditors": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Set to true if all auditors in audit firm have access", + "smithy.api#required": {} + } + }, + "deletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the audit was deleted", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the audit was created", + "smithy.api#required": {} + } + }, + "modificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the audit was updated", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the audit was marked completed, and report was uploaded", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "auditFocus": { + "target": "com.vanta.auditor_api#AuditFocus", + "traits": { + "smithy.api#documentation": "Audit focus determines if the audit is internal or external facing", + "smithy.api#required": {} + } + }, + "auditorRequestListMetadata": { + "target": "com.vanta.auditor_api#AuditAuditorRequestListMetadata", + "traits": { + "smithy.api#documentation": "Metadata about the auditor request list. This field is only present for IRL (Information\nRequest List) based audits and will be undefined for standard audits. Use the presence\nof this field to differentiate between IRL and non-IRL audits." + } + }, + "segments": { + "target": "com.vanta.auditor_api#AuditSegmentsList", + "traits": { + "smithy.api#documentation": "The audit's scope as a list of segments. Always present. A live\nsingle-framework audit has one entry; a multi-framework audit has one\nentry per in-scope framework (and business unit or system, when applicable).\nSoft-deleted audits return an empty list. Prefer this over the deprecated\ntop-level `framework` field.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditAllowAuditorEmailsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Emails of auditors with access to audit" + } + }, + "com.vanta.auditor_api#AuditFocus": { + "type": "enum", + "members": { + "EXTERNAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXTERNAL" + } + }, + "INTERNAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INTERNAL" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditAuditorRequestListMetadata": { + "type": "structure", + "members": { + "requestsSharedWithCustomer": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when information requests were shared with the customer. Null if not shared.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Metadata about the auditor request list. This field is only present for IRL (Information\nRequest List) based audits and will be undefined for standard audits. Use the presence\nof this field to differentiate between IRL and non-IRL audits." + } + }, + "com.vanta.auditor_api#AuditSegment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the segment.", + "smithy.api#required": {} + } + }, + "kind": { + "target": "com.vanta.auditor_api#AuditSegmentKind", + "traits": { + "smithy.api#documentation": "Whether this segment is a program (framework / business unit) or a system.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The segment's display label. Do not reconstruct this from framework + BU.", + "smithy.api#required": {} + } + }, + "framework": { + "target": "com.vanta.auditor_api#AuditSegmentFramework", + "traits": { + "smithy.api#documentation": "The framework reached through this segment.", + "smithy.api#required": {} + } + }, + "businessUnit": { + "target": "com.vanta.auditor_api#AuditSegmentAssociation", + "traits": { + "smithy.api#documentation": "The business unit this program segment is scoped to, or null when the\nsegment is not BU-scoped or the BU cannot be resolved.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "system": { + "target": "com.vanta.auditor_api#AuditSegmentAssociation", + "traits": { + "smithy.api#documentation": "The information system this system segment is scoped to, or null on\nprogram segments.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "soc2Deliverable": { + "target": "com.vanta.auditor_api#AuditSoc2Deliverable", + "traits": { + "smithy.api#documentation": "SOC 2 report type and Trust Services Criteria for this segment, or null.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "One segment of an audit's scope. A live single-framework audit has exactly\none entry; a live multi-framework audit has one per in-scope framework\n(and business unit or system, when applicable). Soft-deleted audits return\nan empty list. `displayName` is the segment label owned by audit scope\n(for example \"{Framework}\" or \"{Framework} — {Business Unit}\").\n`soc2Deliverable` is the per-segment SOC 2 config, or null. `businessUnit`\nis set for program segments that are BU-scoped and null otherwise. `system`\nis set for system segments and null otherwise." + } + }, + "com.vanta.auditor_api#AuditSegmentKind": { + "type": "enum", + "members": { + "PROGRAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PROGRAM" + } + }, + "SYSTEM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SYSTEM" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditSegmentFramework": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The stable identifier of the framework (for example `soc2`).", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The human-readable framework name.", + "smithy.api#required": {} + } + }, + "shortName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The short framework name used in compact UI.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The framework reached through a segment." + } + }, + "com.vanta.auditor_api#AuditSegmentAssociation": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the associated business unit or information system.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The human-readable name of the associated business unit or information system.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A business unit or information-system association on an audit segment." + } + }, + "com.vanta.auditor_api#AuditSoc2Deliverable": { + "type": "structure", + "members": { + "reportType": { + "target": "com.vanta.auditor_api#AuditSoc2ReportType", + "traits": { + "smithy.api#documentation": "SOC 2 report type for this segment.", + "smithy.api#required": {} + } + }, + "tscs": { + "target": "com.vanta.auditor_api#AuditSoc2DeliverableTscsList", + "traits": { + "smithy.api#documentation": "Trust Services Criteria this segment covers.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Per-segment SOC 2 report configuration. Null when the segment is not SOC 2\nor has no configured deliverable." + } + }, + "com.vanta.auditor_api#AuditSoc2ReportType": { + "type": "enum", + "members": { + "SOC2TYPE1": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "soc2type1" + } + }, + "SOC2TYPE2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "soc2type2" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditSoc2Tsc": { + "type": "enum", + "members": { + "SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY" + } + }, + "AVAILABILITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AVAILABILITY" + } + }, + "CONFIDENTIALITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONFIDENTIALITY" + } + }, + "PRIVACY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRIVACY" + } + }, + "PROCESSING_INTEGRITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PROCESSING_INTEGRITY" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditSoc2DeliverableTscsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditSoc2Tsc" + }, + "traits": { + "smithy.api#documentation": "Trust Services Criteria this segment covers." + } + }, + "com.vanta.auditor_api#AuditSegmentsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditSegment" + }, + "traits": { + "smithy.api#documentation": "The audit's scope as a list of segments. Always present. A live\nsingle-framework audit has one entry; a multi-framework audit has one\nentry per in-scope framework (and business unit or system, when applicable).\nSoft-deleted audits return an empty list. Prefer this over the deprecated\ntop-level `framework` field." + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#Audit" + }, + "traits": {} + }, + "com.vanta.auditor_api#PageInfo": { + "type": "structure", + "members": { + "endCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The cursor that points to the end of the current page, or null if there is no such cursor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "hasNextPage": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Indicates if there is another page after the current page.", + "smithy.api#required": {} + } + }, + "hasPreviousPage": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Indicates if there is a page before the current page.", + "smithy.api#required": {} + } + }, + "startCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The cursor that points to the start of the current page, or null if there is no such cursor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Provides information about the pagination of a dataset." + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAudits": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListAuditsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseAudit" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits", + "code": 200 + }, + "smithy.api#documentation": "List audits\n\nReturns a paginated list of audits scoped to the audit firm.\n\nTo identify IRL (Information Request List) audits, check for the presence of the\n`auditorRequestListMetadata` field. This field is only present for IRL-based audits\nand will be `undefined` for standard audits.\n\nEach audit includes `segments`, the audit's scope. A live single-framework\naudit has one entry; a live multi-framework audit has one entry per\nin-scope framework (and business unit or system, when applicable).\nSoft-deleted audits return an empty list. The top-level `framework` field\nis deprecated; use `segments` for framework identity.\n\nRate limit: 250 requests / minute." + } + }, + "com.vanta.auditor_api#DuplicateRequestAllowAuditorEmailsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Emails of auditors who may access the new audit. Minimum one entry required.\nEach email must match an active user in the authenticated audit firm's domain." + } + }, + "com.vanta.auditor_api#DuplicateRequest": { + "type": "structure", + "members": { + "sourceAuditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the source IRL audit to duplicate.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name for the new audit engagement.", + "smithy.api#required": {} + } + }, + "auditStartDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Start of the audit window for the new audit.", + "smithy.api#required": {} + } + }, + "auditEndDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "End of the audit window for the new audit.", + "smithy.api#required": {} + } + }, + "earlyAccessStartsAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When auditors gain access to the new audit.", + "smithy.api#required": {} + } + }, + "allowAuditorEmails": { + "target": "com.vanta.auditor_api#DuplicateRequestAllowAuditorEmailsList", + "traits": { + "smithy.api#documentation": "Emails of auditors who may access the new audit. Minimum one entry required.\nEach email must match an active user in the authenticated audit firm's domain.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#Duplicate": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#DuplicateRequest" + }, + "output": { + "target": "com.vanta.auditor_api#Audit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/audits/duplicate", + "code": 200 + }, + "smithy.api#documentation": "Duplicate an IRL audit\n\nDuplicates an existing IRL audit into a new audit engagement with the supplied\ndisplayName, audit dates, early access date, and auditor roster. Company, audit\ntype, and framework are copied from the source audit and cannot be changed.\n\nEach email in `allowAuditorEmails` must match an active user in the\nauthenticated audit firm's domain. Provision auditors via `POST /auditors`\nbefore referencing them here, or copy emails from `GET /audits/{sourceAuditId}`\n→ `allowAuditorEmails` when duplicating with the same roster.\n\nInformation requests are copied from the source audit. After duplication:\n\n- Requests with Vanta evidence will be pre-filled and marked as internal review.\n\n Review them before sharing with your customer.\n- Requests where evidence was not available or was uploaded externally will need\n\n evidence added manually.\n- Evidence capture dates and due dates can be modified after duplication.\n\nAudits with generated information requests can be duplicated only after their information\nrequests have been created successfully.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#GetAuditRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#GetAudit": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#GetAuditRequest" + }, + "output": { + "target": "com.vanta.auditor_api#Audit" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}", + "code": 200 + }, + "smithy.api#documentation": "Get audit by ID\n\nReturns a single audit by ID, scoped to the audit firm.\n\nTo identify IRL (Information Request List) audits, check for the presence of the\n`auditorRequestListMetadata` field. This field is only present for IRL-based audits\nand will be `undefined` for standard audits.\n\nThe response includes `segments`, the audit's scope. A live single-framework\naudit has one entry; a live multi-framework audit has one entry per\nin-scope framework (and business unit or system, when applicable).\nSoft-deleted audits return an empty list. The top-level `framework` field\nis deprecated; use `segments` for framework identity.\n\nRate limit: 250 requests / minute." + } + }, + "com.vanta.auditor_api#ApiCodeChangeSource": { + "type": "enum", + "members": { + "GITHUB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "github" + } + }, + "GITLAB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "gitlab" + } + }, + "BITBUCKET": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "bitbucket" + } + }, + "AZUREDEVOPS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "azuredevops" + } + } + }, + "traits": { + "smithy.api#documentation": "Version control source service name for code changes." + } + }, + "com.vanta.auditor_api#ListCodeChangesRequestSourcesMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#ApiCodeChangeSource" + }, + "traits": {} + }, + "com.vanta.auditor_api#ListCodeChangesRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search", + "smithy.api#documentation": "Search term for filtering by code change title or repository name" + } + }, + "sourcesMatchesAny": { + "target": "com.vanta.auditor_api#ListCodeChangesRequestSourcesMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "sourcesMatchesAny", + "smithy.api#documentation": "Filter code changes by version control source (accepted values: github, gitlab, bitbucket, azuredevops)" + } + }, + "closedAfterDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "closedAfterDate", + "smithy.api#documentation": "Filter code changes closed on or after this date (ISO 8601)" + } + }, + "closedBeforeDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "closedBeforeDate", + "smithy.api#documentation": "Filter code changes closed on or before this date (ISO 8601)" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseCodeChange": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseCodeChangeResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#CodeChange": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Code change record ID - always present.", + "smithy.api#required": {} + } + }, + "codeChange": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Code change title (e.g. PR title) - always present.", + "smithy.api#required": {} + } + }, + "identifier": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Code change identifier (e.g. PR number)." + } + }, + "service": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Version control source where the change originated.\nKnown values are listed in {@link ApiCodeChangeSource}; other strings may\nappear if a new source is onboarded before this enum is updated." + } + }, + "repository": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Repository name." + } + }, + "openedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the code change was opened." + } + }, + "closedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the code change was merged/closed." + } + } + }, + "traits": { + "smithy.api#documentation": "Code change data.\n\n`id` and `codeChange` are required. All other fields are optional to support customizable field visibility.\n\nOmitted keys mean the column is not in the response; `null` means the column is present but empty." + } + }, + "com.vanta.auditor_api#PaginatedResponseCodeChangeResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#CodeChange" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseCodeChangeResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseCodeChangeResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListCodeChanges": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListCodeChangesRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseCodeChange" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/assets/code-changes", + "code": 200 + }, + "smithy.api#documentation": "List code changes for an audit\n\nRetrieves code changes population data for an audit.\n\nThis endpoint provides access to code change records (pull requests)\nvisible to auditors during an audit engagement.\n\nSupports filtering by:\n- `search`: Searches code change titles and repository names (case-insensitive)\n- `sourcesMatchesAny`: Filters by version control source (accepted values: github, gitlab, bitbucket, azuredevops)\n- `closedAfterDate` / `closedBeforeDate`: Filters by the closed date range\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nResults are sorted by closed date (newest first). This sort order is\nfixed and cannot be customized via query parameters.\n\nReturns 422 when the audit does not have exactly one program segment\n(multi-framework audits are not supported on this endpoint).\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#ListAuditCommentsRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "changedSinceDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "changedSinceDate", + "smithy.api#documentation": "Includes all comments that have changed since changedSinceDate." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseComment": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseCommentResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#Comment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the comment", + "smithy.api#required": {} + } + }, + "auditEvidenceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the audit evidence related to the comment.", + "smithy.api#required": {} + } + }, + "text": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The comment message", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the comment was created", + "smithy.api#required": {} + } + }, + "modificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the comment was updated", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "deletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the comment was deleted", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email of the comment author. This acts as a unique identifier to map users between Vanta and external systems.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "authorName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Human-readable display name of the comment author.\nNull if the author's name is not available (e.g., user was deleted).\nThis enables correct author attribution in integrations where users cannot\nbe reliably matched across systems by email alone.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseCommentResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#Comment" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseCommentResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseCommentResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAuditComments": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListAuditCommentsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseComment" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/comments", + "code": 200 + }, + "smithy.api#documentation": "List audit comments\n\nReturns a paginated list of comments for an audit.\n\nRate limit: 250 requests / minute." + } + }, + "com.vanta.auditor_api#ListAuditControlsRequestExternalIdMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAuditControlsRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "externalIdMatchesAny": { + "target": "com.vanta.auditor_api#ListAuditControlsRequestExternalIdMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "externalIdMatchesAny", + "smithy.api#documentation": "Filter controls whose externalId matches any of the provided values (exact, case-sensitive match)." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditorControl": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditorControlResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditorControl": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's unique ID.", + "smithy.api#required": {} + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's external ID.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's name.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's description.", + "smithy.api#required": {} + } + }, + "source": { + "target": "com.vanta.auditor_api#ControlSource", + "traits": { + "smithy.api#documentation": "The control's source, either \"VANTA\" or \"CUSTOM\".", + "smithy.api#required": {} + } + }, + "domains": { + "target": "com.vanta.auditor_api#AuditorControlDomainsList", + "traits": { + "smithy.api#documentation": "The security domains that the control belongs to.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "com.vanta.auditor_api#Owner", + "traits": { + "smithy.api#documentation": "The control's owner.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "role": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's GDPR role, if the control is a GDPR control.", + "com.distilled.openapi#nullable": {} + } + }, + "customFields": { + "target": "com.vanta.auditor_api#AuditorControlCustomFieldsList", + "traits": { + "smithy.api#documentation": "The control's custom field values, if control custom fields is included in your Vanta instance.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the control was created. Returns null for Vanta library controls.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "modificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the control was last modified. Returns null for Vanta library controls.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "framework": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The report standard framework fulfilled by the control.\nIncomplete once a control is in scope for more than one framework.", + "smithy.api#required": {} + } + }, + "sections": { + "target": "com.vanta.auditor_api#AuditorControlSectionsList", + "traits": { + "smithy.api#documentation": "Sections of a framework that this control satisfies", + "smithy.api#required": {} + } + }, + "inScopeSegmentIds": { + "target": "com.vanta.auditor_api#AuditorControlInScopeSegmentIdsList", + "traits": { + "smithy.api#documentation": "Audit segments this control is in scope for. Empty when the control is\nattached only by a direct link and has no catalog mapping on a\nmulti-program audit.", + "smithy.api#required": {} + } + }, + "assessments": { + "target": "com.vanta.auditor_api#AuditorControlAssessmentsList", + "traits": { + "smithy.api#documentation": "The auditor's assessments of this control, one per audit program segment the\ncontrol is in scope for (a multi-framework audit can have more than one).\nPopulated only for IRL audits when the assessment feature is enabled; empty\notherwise. Within an in-scope segment a control with no recorded assessment\ncoerces to `NOT_ASSESSED`; a segment the control is not in scope for\ncontributes no entry.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ControlSource": { + "type": "enum", + "members": { + "VANTA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Vanta" + } + }, + "CUSTOM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Custom" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditorControlDomainsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The security domains that the control belongs to." + } + }, + "com.vanta.auditor_api#Owner": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the person.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the person that is shown in product.", + "smithy.api#required": {} + } + }, + "emailAddress": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the person.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#CustomField": { + "type": "structure", + "members": { + "label": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "value": { + "target": "com.vanta.auditor_api#CustomFieldValue", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#CustomFieldValueCase1List": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.auditor_api#CustomFieldValue": { + "type": "union", + "members": { + "Case0": { + "target": "smithy.api#String" + }, + "Case1": { + "target": "com.vanta.auditor_api#CustomFieldValueCase1List" + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditorControlCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#CustomField" + }, + "traits": { + "smithy.api#documentation": "The control's custom field values, if control custom fields is included in your Vanta instance." + } + }, + "com.vanta.auditor_api#Section": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The section name", + "smithy.api#required": {} + } + }, + "framework": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The section framework", + "smithy.api#required": {} + } + }, + "principle": { + "target": "com.vanta.auditor_api#SectionPrinciple", + "traits": { + "smithy.api#documentation": "The principle that groups this section, if any.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#SectionPrinciple": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The principle's unique ID.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The principle's name.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditorControlSectionsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#Section" + }, + "traits": { + "smithy.api#documentation": "Sections of a framework that this control satisfies" + } + }, + "com.vanta.auditor_api#AuditorControlInScopeSegmentIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Audit segments this control is in scope for. Empty when the control is\nattached only by a direct link and has no catalog mapping on a\nmulti-program audit." + } + }, + "com.vanta.auditor_api#AuditControlAssessment": { + "type": "structure", + "members": { + "segmentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The audit program segment this assessment belongs to.", + "smithy.api#required": {} + } + }, + "assessmentState": { + "target": "com.vanta.auditor_api#AuditControlAssessmentState", + "traits": { + "smithy.api#documentation": "The auditor's assessment of the control for this segment; `NOT_ASSESSED`\nwhen no assessment has been recorded.", + "smithy.api#required": {} + } + }, + "justification": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Free-text reasoning for the assessment; `null` when none has been recorded.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "An auditor's assessment of a control within one segment of an audit.\nAssessments are keyed per segment, so a control in scope for more than one\nsegment (a multi-framework audit) can carry a distinct assessment per\nsegment. A segment with no recorded assessment coerces to `NOT_ASSESSED` with\na `null` justification." + } + }, + "com.vanta.auditor_api#AuditControlAssessmentState": { + "type": "enum", + "members": { + "IN_PLACE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PLACE" + } + }, + "NOT_IN_PLACE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_IN_PLACE" + } + }, + "PARTIAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PARTIAL" + } + }, + "NOT_ASSESSED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_ASSESSED" + } + }, + "CONFORMING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONFORMING" + } + }, + "MINOR_NON_CONFORMITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MINOR_NON_CONFORMITY" + } + }, + "MAJOR_NON_CONFORMITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MAJOR_NON_CONFORMITY" + } + }, + "SATISFIED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SATISFIED" + } + }, + "NOT_SATISFIED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_SATISFIED" + } + }, + "OTHER_THAN_SATISFIED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OTHER_THAN_SATISFIED" + } + }, + "TRUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TRUE" + } + }, + "FALSE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FALSE" + } + } + }, + "traits": { + "smithy.api#documentation": "An auditor's assessment of a control within an audit. This is the full flat\nunion of every framework's assessment states (the superset); a given audit's\nframework only uses its own subset. `NOT_ASSESSED` is shared by all\nframeworks and is the default for a control that has not yet been assessed.\n\nWhich states apply to which framework:\n- Most frameworks (e.g. SOC 2): `IN_PLACE`, `NOT_IN_PLACE`, `PARTIAL`, `NOT_ASSESSED`\n- ISO 27001: `CONFORMING`, `MINOR_NON_CONFORMITY`, `MAJOR_NON_CONFORMITY`, `NOT_ASSESSED`\n- FedRAMP: `SATISFIED`, `NOT_SATISFIED`, `OTHER_THAN_SATISFIED`, `NOT_ASSESSED`\n- FedRAMP Key Security Indicators (KSI): `TRUE`, `FALSE`, `PARTIAL`, `NOT_ASSESSED`\n\nDistinct from `ControlStatus`, which is the computed tests/documents-passing\nstatus — a different concept." + } + }, + "com.vanta.auditor_api#AuditorControlAssessmentsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditControlAssessment" + }, + "traits": { + "smithy.api#documentation": "The auditor's assessments of this control, one per audit program segment the\ncontrol is in scope for (a multi-framework audit can have more than one).\nPopulated only for IRL audits when the assessment feature is enabled; empty\notherwise. Within an in-scope segment a control with no recorded assessment\ncoerces to `NOT_ASSESSED`; a segment the control is not in scope for\ncontributes no entry." + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditorControlResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditorControl" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseAuditorControlResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditorControlResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAuditControls": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListAuditControlsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditorControl" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/controls", + "code": 200 + }, + "smithy.api#documentation": "List audit controls\n\nReturns a paginated list of controls for an audit.\n\nRate limit: 250 requests / minute." + } + }, + "com.vanta.auditor_api#ControlDomain": { + "type": "enum", + "members": { + "ARTIFICIAL_AUTONOMOUS_TECHNOLOGY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ARTIFICIAL_&_AUTONOMOUS_TECHNOLOGY" + } + }, + "ASSET_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ASSET_MANAGEMENT" + } + }, + "BUSINESS_CONTINUITY_DISASTER_RECOVERY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BUSINESS_CONTINUITY_&_DISASTER_RECOVERY" + } + }, + "CAPACITY_PERFORMANCE_PLANNING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CAPACITY_&_PERFORMANCE_PLANNING" + } + }, + "CHANGE_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CHANGE_MANAGEMENT" + } + }, + "CLOUD_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CLOUD_SECURITY" + } + }, + "COMPLIANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLIANCE" + } + }, + "CONFIGURATION_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONFIGURATION_MANAGEMENT" + } + }, + "CONTINUOUS_MONITORING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTINUOUS_MONITORING" + } + }, + "CRYPTOGRAPHIC_PROTECTIONS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRYPTOGRAPHIC_PROTECTIONS" + } + }, + "DATA_CLASSIFICATION_HANDLING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DATA_CLASSIFICATION_&_HANDLING" + } + }, + "EMBEDDED_TECHNOLOGY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EMBEDDED_TECHNOLOGY" + } + }, + "ENDPOINT_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ENDPOINT_SECURITY" + } + }, + "HUMAN_RESOURCES_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HUMAN_RESOURCES_SECURITY" + } + }, + "IDENTIFICATION_AUTHENTICATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IDENTIFICATION_&_AUTHENTICATION" + } + }, + "INCIDENT_RESPONSE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCIDENT_RESPONSE" + } + }, + "INFORMATION_ASSURANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INFORMATION_ASSURANCE" + } + }, + "MAINTENANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MAINTENANCE" + } + }, + "MOBILE_DEVICE_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MOBILE_DEVICE_MANAGEMENT" + } + }, + "NETWORK_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NETWORK SECURITY" + } + }, + "PHYSICAL_ENVIRONMENTAL_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PHYSICAL_&_ENVIRONMENTAL_SECURITY" + } + }, + "PRIVACY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRIVACY" + } + }, + "PROJECT_RESOURCE_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PROJECT_&_RESOURCE MANAGEMENT" + } + }, + "RISK_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RISK_MANAGEMENT" + } + }, + "SECURE_ENGINEERING_ARCHITECTURE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURE_ENGINEERING_&_ARCHITECTURE" + } + }, + "SECURITY_AWARENESS_TRAINING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_AWARENESS_&_TRAINING" + } + }, + "SECURITY_OPERATIONS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_OPERATIONS" + } + }, + "SECURITY_PRIVACY_GOVERNANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_&_PRIVACY_GOVERNANCE" + } + }, + "TECHNOLOGY_DEVELOPMENT_ACQUISITION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TECHNOLOGY_DEVELOPMENT_&_ACQUISITION" + } + }, + "THIRD_PARTY_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "THIRD-PARTY_MANAGEMENT" + } + }, + "THREAT_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "THREAT_MANAGEMENT" + } + }, + "VULNERABILITY_PATCH_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VULNERABILITY_&_PATCH_MANAGEMENT" + } + }, + "WEB_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WEB_SECURITY" + } + }, + "ADMINISTRATIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ADMINISTRATIVE" + } + }, + "PHYSICAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PHYSICAL" + } + }, + "TECHNICAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TECHNICAL" + } + }, + "BASIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BASIC" + } + }, + "DERIVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DERIVED" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#FrameworkSection": { + "type": "structure", + "members": { + "frameworkId": { + "target": "com.vanta.auditor_api#FrameworkSectionFrameworkId", + "traits": { + "smithy.api#required": {} + } + }, + "sectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#FrameworkId": { + "type": "enum", + "members": { + "AU_E_8": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AU_E_8" + } + }, + "AWS_FTR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AWS_FTR" + } + }, + "CCPA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CCPA" + } + }, + "CIS_V8": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CIS_V8" + } + }, + "CPS_234": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CPS_234" + } + }, + "DORA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DORA" + } + }, + "FEDRAMP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FEDRAMP" + } + }, + "GDPR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GDPR" + } + }, + "HIPAA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HIPAA" + } + }, + "HITRUST_E1": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HITRUST_E1" + } + }, + "ISO_27001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_27001" + } + }, + "ISO_27001_2022": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_27001_2022" + } + }, + "ISO_27017": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_27017" + } + }, + "ISO_27018": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_27018" + } + }, + "ISO_27701": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_27701" + } + }, + "ISO_42001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_42001" + } + }, + "ISO_9001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_9001" + } + }, + "MSFT_SSPA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MSFT_SSPA" + } + }, + "MVSP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MVSP" + } + }, + "NIS_2D": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIS_2D" + } + }, + "NIST_171": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_171" + } + }, + "NIST_171_R3": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_171_R3" + } + }, + "NIST_53": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_53" + } + }, + "NIST_AI_RMF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_AI_RMF" + } + }, + "NIST_CSF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_CSF" + } + }, + "NIST_CSF_2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_CSF_2" + } + }, + "OFDSS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFDSS" + } + }, + "PCI_SAQ_A": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI_SAQ_A" + } + }, + "PCI_SAQ_A_EP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI_SAQ_A_EP" + } + }, + "PCI_SAQ_D_MERCHANT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI_SAQ_D_MERCHANT" + } + }, + "PCI_SAQ_D_SP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI_SAQ_D_SP" + } + }, + "PCI_DDS_4": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI_DDS_4" + } + }, + "SOC_2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SOC_2" + } + }, + "SOX_ITGC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SOX_ITGC" + } + }, + "UK_CYBER_ESSENTIALS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UK_CYBER_ESSENTIALS" + } + }, + "US_DATA_PRIVACY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "US_DATA_PRIVACY" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#FrameworkSectionFrameworkId": { + "type": "union", + "members": { + "FrameworkId": { + "target": "com.vanta.auditor_api#FrameworkId" + }, + "Case1": { + "target": "smithy.api#String" + } + }, + "traits": {} + }, + "com.vanta.auditor_api#CreateCustomControlRequestSectionsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#FrameworkSection" + }, + "traits": { + "smithy.api#documentation": "Framework sections that the control should be mapped to." + } + }, + "com.vanta.auditor_api#GdprRole": { + "type": "enum", + "members": { + "BOTH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BOTH" + } + }, + "CONTROLLER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTROLLER" + } + }, + "PROCESSOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PROCESSOR" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#CreateCustomControlRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The external id of the control.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the control.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the control.", + "smithy.api#required": {} + } + }, + "effectiveDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The effective date of the control.", + "smithy.api#required": {} + } + }, + "category": { + "target": "com.vanta.auditor_api#ControlDomain", + "traits": { + "smithy.api#documentation": "The category of the control. See the ControlDomain enum for possible values.", + "smithy.api#required": {} + } + }, + "sections": { + "target": "com.vanta.auditor_api#CreateCustomControlRequestSectionsList", + "traits": { + "smithy.api#documentation": "Framework sections that the control should be mapped to.", + "com.distilled.openapi#nullable": {} + } + }, + "role": { + "target": "com.vanta.auditor_api#GdprRole", + "traits": { + "smithy.api#documentation": "The GDPR role of the control, which specifies whether the data is being \"collected\" or \"processed\". See the GdprRole enum for possible values.\nThis field should only be included for controls that are to be mapped to the GDPR framework.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#Control": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's unique ID.", + "smithy.api#required": {} + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's external ID.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's name.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's description.", + "smithy.api#required": {} + } + }, + "source": { + "target": "com.vanta.auditor_api#ControlSource", + "traits": { + "smithy.api#documentation": "The control's source, either \"VANTA\" or \"CUSTOM\".", + "smithy.api#required": {} + } + }, + "domains": { + "target": "com.vanta.auditor_api#ControlDomainsList", + "traits": { + "smithy.api#documentation": "The security domains that the control belongs to.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "com.vanta.auditor_api#Owner", + "traits": { + "smithy.api#documentation": "The control's owner.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "role": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's GDPR role, if the control is a GDPR control.", + "com.distilled.openapi#nullable": {} + } + }, + "customFields": { + "target": "com.vanta.auditor_api#ControlCustomFieldsList", + "traits": { + "smithy.api#documentation": "The control's custom field values, if control custom fields is included in your Vanta instance.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the control was created. Returns null for Vanta library controls.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "modificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the control was last modified. Returns null for Vanta library controls.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ControlDomainsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The security domains that the control belongs to." + } + }, + "com.vanta.auditor_api#ControlCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#CustomField" + }, + "traits": { + "smithy.api#documentation": "The control's custom field values, if control custom fields is included in your Vanta instance." + } + }, + "com.vanta.auditor_api#CreateCustomControl": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#CreateCustomControlRequest" + }, + "output": { + "target": "com.vanta.auditor_api#Control" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/audits/{auditId}/controls/custom-controls", + "code": 200 + }, + "smithy.api#documentation": "Create a custom control for an audit\n\nCreate a custom control for an audit.\n\nThis endpoint supports classic audits only. Audits that use information request\nlists (IRL) are not supported and return a 422 error.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#UpsertAssessmentForControlRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "segmentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The program segment to assess. Required when the audit has more than one\nprogram segment. Optional on a single-program audit (the only program is\nused). Must be a program segment on the audit; system segments are rejected." + } + }, + "assessmentState": { + "target": "com.vanta.auditor_api#AuditControlAssessmentState", + "traits": { + "smithy.api#documentation": "The assessment state to record. Must be one of the states valid for the\nsegment's framework; the request is rejected otherwise.", + "smithy.api#required": {} + } + }, + "justification": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Free-text reasoning for the assessment. Required, and at most 5000 characters.", + "smithy.api#required": {} + } + }, + "auditorEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the auditor performing the assessment. Must match an existing Vanta\nuser who belongs to the audit firm making the API request.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#AuditorControlAssessment": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control this assessment belongs to.", + "smithy.api#required": {} + } + }, + "segmentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The program segment this assessment was written to.", + "smithy.api#required": {} + } + }, + "assessmentState": { + "target": "com.vanta.auditor_api#AuditControlAssessmentState", + "traits": { + "smithy.api#documentation": "The recorded assessment state.", + "smithy.api#required": {} + } + }, + "justification": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The recorded justification.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A control's auditor assessment, as persisted. Returned by the assessment\nwrite endpoint so the caller sees exactly what was recorded." + } + }, + "com.vanta.auditor_api#UpsertAssessmentForControl": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#UpsertAssessmentForControlRequest" + }, + "output": { + "target": "com.vanta.auditor_api#AuditorControlAssessment" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/audits/{auditId}/controls/{controlId}/assessment", + "code": 200 + }, + "smithy.api#documentation": "Upsert a control's assessment within an audit\n\nRecords (upserts) an auditor's assessment state and justification for a\ncontrol within an IRL audit — the API equivalent of assessing a control in\nthe web app. Overwrites the single assessment for this control in the\naudit's program segment.\n\nThe `assessmentState` must be valid for the segment's framework (the request\nis rejected otherwise). The acting auditor is identified by `auditorEmail`,\nwhich must belong to the audit firm making the request.\n\nReturns 404 when the control is not part of the audit or the auditor email\ndoes not resolve to a firm user. Returns 422 when the audit does not have\nexactly one program segment (multi-framework audits are not supported on\nthis endpoint). Applies to both Full and Controlled Audit View audits.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#ListCommentsForControlRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of comments to return per page." + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from a previous response. Provide to fetch the next page of comments." + } + }, + "changedSinceDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "changedSinceDate", + "smithy.api#documentation": "Includes all comments that have changed since changedSinceDate.\nConsiders creationDate, modificationDate, and deletionDate timestamps when determining changes." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditControlComment": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditControlCommentResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditControlComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the comment within Vanta's system.\nFormat: ObjectId as a string (e.g., \"6890e473dce1da5d8406f5e7\").", + "smithy.api#required": {} + } + }, + "text": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The comment message content.\nCan include explanations, questions, or clarifications about the control.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the comment was created.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + }, + "modificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the comment was last edited.\nNull if the comment has never been modified.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "deletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the comment was soft-deleted.\nNull if the comment has not been deleted.\nSoft deletes retain the comment for audit history while hiding it from normal operations.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the comment author.\nThis email uniquely identifies users between Vanta and external audit systems.\nNull when the comment author can't be matched to a Vanta user.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "authorName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Human-readable display name of the comment author.\nNull if the author's name is not available (e.g., user was deleted).\nThis enables correct author attribution in integrations where users cannot\nbe reliably matched across systems by email alone.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A comment on a control within an audit. These threaded discussions let\nauditors and customers collaborate on a specific control — asking questions,\ndocumenting reasoning, or recording follow-ups — directly against the control\nbeing assessed.\n\nAudit control comments are scoped to a single audit engagement and are\ndistinct from any organization-internal control comments." + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditControlCommentResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditControlComment" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseAuditControlCommentResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditControlCommentResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListCommentsForControl": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListCommentsForControlRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditControlComment" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/controls/{controlId}/comments", + "code": 200 + }, + "smithy.api#documentation": "List comments for a control within an audit\n\nRetrieves a paginated list of comments on a control within an IRL audit,\nenabling auditors to view collaboration history on the control.\n\nThis endpoint always includes soft-deleted records (where `deletionDate !== null`).\nClients should check the `deletionDate` field to identify and handle deleted records\nappropriately in their systems.\n\nThis endpoint supports delta synchronization via the `changedSinceDate` parameter,\nallowing efficient polling for changes without retrieving the entire dataset.\n\nReturns 404 when the control is not part of the audit.\n\nPagination usage:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage` to see if more data exists\n3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request\n4. Repeat until `hasNextPage` is false\n\nDelta sync usage:\n1. Store the timestamp of your last sync\n2. Pass that timestamp as `changedSinceDate`\n3. Only comments created, modified, or deleted since that timestamp are returned\n4. Process updates, including soft-deletes (deletionDate !== null)\n5. Update your last sync timestamp to the current time\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#CreateCommentForControlRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "text": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The text content of the comment.\nMust be at least 1 character. Can include questions, clarifications,\nor explanations related to the control.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the comment author.\nMust match an existing Vanta user who belongs to the audit firm making the API request.\nThis email uniquely identifies the author across systems.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the comment was created in the external audit management system.\nThis allows synchronizing comment timestamps from external systems.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#CreateCommentForControl": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#CreateCommentForControlRequest" + }, + "output": { + "target": "com.vanta.auditor_api#AuditControlComment" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/audits/{auditId}/controls/{controlId}/comments", + "code": 200 + }, + "smithy.api#documentation": "Create a comment for a control within an audit\n\nCreates a new comment on a control within an IRL audit. The comment author\nmust be an auditor in the audit firm making the request. The comment will be\nassociated with the control and visible to all authorized users.\n\nReturns 404 when the control is not part of the audit.\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#UpdateCommentForControlRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "commentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "text": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The text content of the comment.\nMust be at least 1 character. Can include questions, clarifications,\nor explanations related to the control.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the comment author.\nMust match an existing Vanta user who belongs to the audit firm making the API request.\nThis email uniquely identifies the author across systems.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#UpdateCommentForControl": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#UpdateCommentForControlRequest" + }, + "output": { + "target": "com.vanta.auditor_api#AuditControlComment" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/audits/{auditId}/controls/{controlId}/comments/{commentId}", + "code": 200 + }, + "smithy.api#documentation": "Update a comment for a control within an audit\n\nUpdates an existing comment on a control. Only the original author\nof the comment can update it. The author is identified by their email address,\nwhich must match the email of the user who created the comment.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#DeleteCommentForControlRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "commentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the comment author.\nMust match an existing Vanta user who belongs to the audit firm making the API request.\nThis email uniquely identifies the author across systems.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#DeleteCommentForControl": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#DeleteCommentForControlRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/audits/{auditId}/controls/{controlId}/comments/{commentId}", + "code": 200 + }, + "smithy.api#documentation": "Delete a comment for a control within an audit\n\nDeletes an existing comment on a control. Only the original author\nof the comment can delete it. The author is identified by their email address,\nwhich must match the email of the user who created the comment.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#ListInformationRequestsForControlRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of information requests to return per page." + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from a previous response. Provide to fetch the next page of results." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequest": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#InformationRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the information request within Vanta's system.\nThis is the primary identifier used in all API endpoints.\nFormat: ObjectId as a string (e.g., \"6890e473dce1da5d8406f5e7\")", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "External unique ID to prevent duplicates across different audit systems.\nUsed for idempotency when syncing data between external audit management\nsystems and Vanta. Unlike `id`, this value is provided by the external system.", + "smithy.api#required": {} + } + }, + "additionalControlIds": { + "target": "com.vanta.auditor_api#InformationRequestAdditionalControlIdsList", + "traits": { + "smithy.api#documentation": "Additional control IDs beyond those automatically mapped from framework codes.\nAllows manual association with specific controls when automatic mapping\nis insufficient. Each ID should reference a valid control in your audit framework.", + "smithy.api#required": {} + } + }, + "approvalStatus": { + "target": "com.vanta.auditor_api#InformationRequestApprovalStatus", + "traits": { + "smithy.api#documentation": "Current approval status tracking the request's lifecycle through evidence\nsubmission and auditor review.", + "smithy.api#required": {} + } + }, + "cadence": { + "target": "com.vanta.auditor_api#InformationRequestCadence", + "traits": { + "smithy.api#documentation": "How frequently this information request recurs (e.g., annual password\npolicy reviews). Null for one-time requests.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "frameworkCodes": { + "target": "com.vanta.auditor_api#InformationRequestFrameworkCodesList", + "traits": { + "smithy.api#documentation": "The framework codes this request addresses.\nLinks the request to specific compliance requirements. Can be an empty array\nif no framework codes are associated. These codes correspond to standards like SOC 2, ISO 27001, etc.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Detailed description explaining what evidence is needed and why.\nShould provide clear instructions to help the customer understand what\nto submit.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The deadline by which the customer must fulfill this request.\nNull if no specific deadline is set. Format: ISO 8601 UTC timestamp.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "evidenceCaptureDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The earliest date for which evidence should be captured.\nEvidence dated before this date may not be accepted.\nNull if not restricted. Format: ISO 8601 UTC timestamp.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Non-unique external reference ID for this request.\nUnlike `uniqueId` which must be unique, `requestId` is for display/reference\npurposes only (e.g., \"REQ-123\"). Null if not provided.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "requestType": { + "target": "com.vanta.auditor_api#InformationRequestType", + "traits": { + "smithy.api#documentation": "Defines the scope of evidence required.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Short, descriptive title summarizing what is being requested.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the request was created in the system.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + }, + "modificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the request was last modified.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + }, + "deletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the request was soft-deleted. Null if the request has not\nbeen deleted. Soft deletes allow retaining history while hiding the request\nfrom normal operations.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "ownerAssignment": { + "target": "com.vanta.auditor_api#ResourceOwner", + "traits": { + "smithy.api#documentation": "Resource owner (user or team) assigned to this information request.\nReturns null if no resource owner is assigned.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Information Request resource representing a single request for audit evidence from a customer.\n\nAn information request is created by an auditor and shared with the customer organization.\nThe customer then uploads evidence, which the auditor reviews and either approves or flags\nfor issues." + } + }, + "com.vanta.auditor_api#InformationRequestAdditionalControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Additional control IDs beyond those automatically mapped from framework codes.\nAllows manual association with specific controls when automatic mapping\nis insufficient. Each ID should reference a valid control in your audit framework." + } + }, + "com.vanta.auditor_api#InformationRequestApprovalStatus": { + "type": "enum", + "members": { + "NEEDS_EVIDENCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NEEDS_EVIDENCE" + } + }, + "READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_AUDIT" + } + }, + "AUDITOR_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDITOR_APPROVED" + } + }, + "AUDITOR_FLAGGED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDITOR_FLAGGED" + } + } + }, + "traits": { + "smithy.api#documentation": "Current approval status of the information request, tracking its lifecycle through the audit process.\n\nThe status progresses through the workflow: initial state → awaiting review → approved or flagged.\nStatus can move between awaiting review and flagged states as evidence is reviewed and resubmitted." + } + }, + "com.vanta.auditor_api#InformationRequestCadence": { + "type": "enum", + "members": { + "ANNUALLY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ANNUALLY" + } + }, + "BIANNUALLY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BIANNUALLY" + } + }, + "MONTHLY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MONTHLY" + } + }, + "QUARTERLY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QUARTERLY" + } + } + }, + "traits": { + "smithy.api#documentation": "Frequency cadence for the information request, indicating how often it recurs." + } + }, + "com.vanta.auditor_api#InformationRequestFrameworkCodesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The framework codes this request addresses.\nLinks the request to specific compliance requirements. Can be an empty array\nif no framework codes are associated. These codes correspond to standards like SOC 2, ISO 27001, etc." + } + }, + "com.vanta.auditor_api#InformationRequestType": { + "type": "enum", + "members": { + "POINT_IN_TIME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POINT_IN_TIME" + } + }, + "POPULATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POPULATION" + } + }, + "SAMPLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SAMPLE" + } + } + }, + "traits": { + "smithy.api#documentation": "Type of information request, defining what scope of evidence is needed.\n\n- POINT_IN_TIME: Evidence for a specific moment (e.g., current state of a policy)\n- POPULATION: Evidence covering all items in a category (e.g., all employees)\n- SAMPLE: Evidence for a representative sample (e.g., 10 random customer records)" + } + }, + "com.vanta.auditor_api#ResourceOwner": { + "type": "union", + "members": { + "Case0": { + "target": "com.vanta.auditor_api#ResourceOwnerCase0" + }, + "Case1": { + "target": "com.vanta.auditor_api#ResourceOwnerCase1" + } + }, + "traits": { + "smithy.api#documentation": "Represents either a user or a team owning a resource." + } + }, + "com.vanta.auditor_api#ResourceOwnerCase0Type": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "user" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ResourceOwnerCase0": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "type": { + "target": "com.vanta.auditor_api#ResourceOwnerCase0Type", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ResourceOwnerCase1Type": { + "type": "enum", + "members": { + "TEAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "team" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ResourceOwnerCase1": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "type": { + "target": "com.vanta.auditor_api#ResourceOwnerCase1Type", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#InformationRequest" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListInformationRequestsForControl": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListInformationRequestsForControlRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequest" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/controls/{controlId}/information-requests", + "code": 200 + }, + "smithy.api#documentation": "List information requests linked to a control within an audit\n\nReturns a paginated list of active information requests linked to a specific\ncontrol within an IRL audit. An information request is linked to a control\neither via its framework codes (`criteriaIds`) or via a direct association\n(`additionalControlIds`).\n\nSoft-deleted information requests are not included in the response. To\nsynchronize deletions, use `GET /audits/{auditId}/information-requests`,\nwhich supports `changedSinceDate` and includes soft-deleted records.\n\nReturns 404 when the control is not part of the audit. Returns an empty page\nwhen the control is part of the audit but has no active IRLs linked to it.\n\nPagination usage:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage` to see if more data exists\n3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request\n4. Repeat until `hasNextPage` is false\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#ListAuditEvidenceRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "changedSinceDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "changedSinceDate", + "smithy.api#documentation": "Includes all audit evidence that have changed since changedSinceDate." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseEvidence": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseEvidenceResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#Evidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta internal reference to evidence", + "smithy.api#required": {} + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "This is a static UUID to map Audit Firm controls to Vanta controls", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.auditor_api#AuditEvidenceState", + "traits": { + "smithy.api#documentation": "Vanta internal statuses for audit evidence", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Mutable name for evidence. Not guaranteed to be unique.", + "smithy.api#required": {} + } + }, + "deletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date this Audit Evidence was deleted", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date this Audit Evidence was created", + "smithy.api#required": {} + } + }, + "statusUpdatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Point in time that status was last updated", + "smithy.api#required": {} + } + }, + "testStatus": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The outcome of the automated test run, for Test-type evidence", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "evidenceType": { + "target": "com.vanta.auditor_api#AuditEvidenceType", + "traits": { + "smithy.api#documentation": "The type of Audit Evidence", + "smithy.api#required": {} + } + }, + "evidenceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for evidence", + "smithy.api#required": {} + } + }, + "relatedControls": { + "target": "com.vanta.auditor_api#EvidenceRelatedControlsList", + "traits": { + "smithy.api#documentation": "The controls associated to this evidence", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description for the evidence. It will be set to null if the evidence is deleted", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditEvidenceState": { + "type": "enum", + "members": { + "ACCEPTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Accepted" + } + }, + "FLAGGED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Flagged" + } + }, + "INITIALIZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Initialized" + } + }, + "NA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NA" + } + }, + "NOT_READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Not ready for audit" + } + }, + "READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Ready for audit" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditEvidenceType": { + "type": "enum", + "members": { + "EVIDENCE_REQUEST": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Evidence Request" + } + }, + "POLICY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Policy" + } + }, + "TEST": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Test" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#EvidenceControl": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of control associated to this evidence", + "smithy.api#required": {} + } + }, + "sectionNames": { + "target": "com.vanta.auditor_api#EvidenceControlSectionNamesList", + "traits": { + "smithy.api#documentation": "A list sections associated to the control", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#EvidenceControlSectionNamesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "A list sections associated to the control" + } + }, + "com.vanta.auditor_api#EvidenceRelatedControlsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#EvidenceControl" + }, + "traits": { + "smithy.api#documentation": "The controls associated to this evidence" + } + }, + "com.vanta.auditor_api#PaginatedResponseEvidenceResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#Evidence" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseEvidenceResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseEvidenceResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAuditEvidence": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListAuditEvidenceRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseEvidence" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/evidence", + "code": 200 + }, + "smithy.api#documentation": "List audit evidence\n\nReturns a paginated list of evidence for an audit.\n\nRate limit: 250 requests / minute." + } + }, + "com.vanta.auditor_api#CreateCustomEvidenceRequestRequestControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "A set of controls, referenced by id, to map the evidence to" + } + }, + "com.vanta.auditor_api#RecurrenceDuration": { + "type": "enum", + "members": { + "P0D": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P0D" + } + }, + "P1D": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1D" + } + }, + "P1W": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1W" + } + }, + "P1M": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1M" + } + }, + "P3M": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P3M" + } + }, + "P6M": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P6M" + } + }, + "P1Y": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1Y" + } + }, + "P2Y": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P2Y" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#CreateCustomEvidenceRequestRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlIds": { + "target": "com.vanta.auditor_api#CreateCustomEvidenceRequestRequestControlIdsList", + "traits": { + "smithy.api#documentation": "A set of controls, referenced by id, to map the evidence to", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title for the evidence request", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description for the evidence request", + "smithy.api#required": {} + } + }, + "cadence": { + "target": "com.vanta.auditor_api#RecurrenceDuration", + "traits": { + "smithy.api#documentation": "Renewal cadence", + "smithy.api#required": {} + } + }, + "reminderWindow": { + "target": "com.vanta.auditor_api#RecurrenceDuration", + "traits": { + "smithy.api#documentation": "Duration representing when to send notifications, relative to renewal date", + "smithy.api#required": {} + } + }, + "isRestricted": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether this document contains sensitive data and needs more restrictive read access", + "smithy.api#required": {} + } + }, + "auditorEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the auditor who created the custom evidence request.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#CustomEvidenceRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Internal id of the custom evidence request within Vanta", + "smithy.api#required": {} + } + }, + "controlIds": { + "target": "com.vanta.auditor_api#CustomEvidenceRequestControlIdsList", + "traits": { + "smithy.api#documentation": "A set of controls, referenced by id, to map the evidence to", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title for the evidence request", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description for the evidence request", + "smithy.api#required": {} + } + }, + "cadence": { + "target": "com.vanta.auditor_api#RecurrenceDuration", + "traits": { + "smithy.api#documentation": "Renewal cadence", + "smithy.api#required": {} + } + }, + "reminderWindow": { + "target": "com.vanta.auditor_api#RecurrenceDuration", + "traits": { + "smithy.api#documentation": "Duration representing when to send notifications, relative to renewal date", + "smithy.api#required": {} + } + }, + "isRestricted": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether this document contains sensitive data and needs more restrictive read access", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#CustomEvidenceRequestControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "A set of controls, referenced by id, to map the evidence to" + } + }, + "com.vanta.auditor_api#CreateCustomEvidenceRequest": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#CreateCustomEvidenceRequestRequest" + }, + "output": { + "target": "com.vanta.auditor_api#CustomEvidenceRequest" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/audits/{auditId}/evidence/custom-evidence-requests", + "code": 200 + }, + "smithy.api#documentation": "Create a custom evidence request for an audit\n\nCreate a custom evidence request for an audit.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#GetAuditEvidenceRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "auditEvidenceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#GetAuditEvidence": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#GetAuditEvidenceRequest" + }, + "output": { + "target": "com.vanta.auditor_api#Evidence" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/evidence/{auditEvidenceId}", + "code": 200 + }, + "smithy.api#documentation": "Get an audit evidence item by ID\n\nRetrieves a single classic audit evidence item by its ID, scoped to its\naudit. The response matches the entry `GET /audits/{auditId}/evidence`\nreturns for the same item, so an evidence ID surfaced by a webhook can be\nresolved directly instead of paging the audit's full evidence list.\n\nSoft-deleted evidence (where `deletionDate !== null`) is included in the\nresponse. Clients should check `deletionDate` to determine whether the item\nhas been deleted. This matches `GET /audits/{auditId}/evidence`, which\nsupports `changedSinceDate` and returns soft-deleted evidence for delta\nsync. As on the list endpoint, `description` is null for deleted items.\n\nRate limit: 250 requests / minute." + } + }, + "com.vanta.auditor_api#AuditorEnabledStateTransition": { + "type": "enum", + "members": { + "ACCEPT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCEPT" + } + }, + "MARK_APPLICABLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MARK_APPLICABLE" + } + }, + "FLAG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FLAG" + } + }, + "MARK_NA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MARK_NA" + } + }, + "READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_AUDIT" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#UpdateAuditEvidenceRequestStatusUpdate": { + "type": "structure", + "members": { + "auditorEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the auditor who changed the state", + "smithy.api#required": {} + } + }, + "stateTransition": { + "target": "com.vanta.auditor_api#AuditorEnabledStateTransition", + "traits": { + "smithy.api#documentation": "State change for audit evidence", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#UpdateAuditEvidenceRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "auditEvidenceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "statusUpdate": { + "target": "com.vanta.auditor_api#UpdateAuditEvidenceRequestStatusUpdate" + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#UpdateAuditEvidence": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#UpdateAuditEvidenceRequest" + }, + "output": { + "target": "com.vanta.auditor_api#Evidence" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/audits/{auditId}/evidence/{auditEvidenceId}", + "code": 200 + }, + "smithy.api#documentation": "Update audit evidence\n\nUpdate audit evidence.\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#CreateCommentForAuditEvidenceRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "auditEvidenceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "text": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Text value of the comment", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of author. Must match an existing Vanta user and the user must exist under the Audit Firm who is making the API request", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the comment was created in the external system", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#CreateCommentForAuditEvidence": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#CreateCommentForAuditEvidenceRequest" + }, + "output": { + "target": "com.vanta.auditor_api#Comment" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/audits/{auditId}/evidence/{auditEvidenceId}/comments", + "code": 200 + }, + "smithy.api#documentation": "Create a comment for audit evidence\n\nCreate a comment in Vanta for a piece of evidence.\n\nRate limit: 25 requests / minute." + } + }, + "com.vanta.auditor_api#GetAuditEvidenceCommentRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "auditEvidenceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "commentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#GetAuditEvidenceComment": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#GetAuditEvidenceCommentRequest" + }, + "output": { + "target": "com.vanta.auditor_api#Comment" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/evidence/{auditEvidenceId}/comments/{commentId}", + "code": 200 + }, + "smithy.api#documentation": "Get an audit evidence comment by ID\n\nRetrieves a single comment on a classic audit evidence item by its ID.\n\nSoft-deleted comments (where `deletionDate !== null`) are included in the\nresponse. Clients should check `deletionDate` to determine whether the\ncomment has been deleted. This matches\n`GET /audits/{auditId}/comments`, which supports `changedSinceDate` and\nreturns soft-deleted comments for delta sync.\n\nComments remain fetchable when the parent evidence item has been\nsoft-deleted, so delayed webhook consumers can still resolve a comment ID\nafter evidence deletion.\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#ListAuditEvidenceUrlsRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "auditEvidenceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseEvidenceUrl": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseEvidenceUrlResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#EvidenceUrl": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta internal reference to evidence", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Pre-signed S3 URL for evidence", + "smithy.api#required": {} + } + }, + "filename": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "File name of evidence", + "smithy.api#required": {} + } + }, + "isDownloadable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Set to true if this is a presigned s3 url. Set to false if this is a customer uploaded link", + "smithy.api#required": {} + } + }, + "mimeType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "MIME type of the evidence file (e.g., \"application/pdf\", \"image/png\")", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseEvidenceUrlResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#EvidenceUrl" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseEvidenceUrlResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseEvidenceUrlResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAuditEvidenceUrls": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListAuditEvidenceUrlsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseEvidenceUrl" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/evidence/{auditEvidenceId}/urls", + "code": 200 + }, + "smithy.api#documentation": "List audit evidence url\n\nReturns a paginated list of evidence urls for an audit. This endpoint should be called whenever an\nevidence is created or has a statusUpdatedAt field that is more recent than the most recent polling event.\n\nEvidence must be in one of the following states to retrieve URLs: \"Ready for audit\", \"Accepted\", \"Flagged\", or \"NA\".\n\nReturns 422 when the audit does not have exactly one program segment\n(multi-framework audits are not supported on this endpoint).\n\nRate limit: 600 requests / minute." + } + }, + "com.vanta.auditor_api#GetFrameworkCodesRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#FrameworkCodes": { + "type": "structure", + "members": { + "frameworkCodes": { + "target": "com.vanta.auditor_api#FrameworkCodesFrameworkCodesList", + "traits": { + "smithy.api#documentation": "Array of valid framework codes for the audit's framework (e.g., \"CC6.1\", \"CC6.2\").\nThese represent the different framework sections available for creating information requests.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Framework codes response resource" + } + }, + "com.vanta.auditor_api#FrameworkCodesFrameworkCodesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Array of valid framework codes for the audit's framework (e.g., \"CC6.1\", \"CC6.2\").\nThese represent the different framework sections available for creating information requests." + } + }, + "com.vanta.auditor_api#GetFrameworkCodes": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#GetFrameworkCodesRequest" + }, + "output": { + "target": "com.vanta.auditor_api#FrameworkCodes" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/framework-codes", + "code": 200 + }, + "smithy.api#documentation": "Get framework codes for an audit\n\nRetrieves all valid framework codes for the specified audit. This endpoint helps users discover which framework codes are available for creating and updating information requests for this audit.\n\nUse this endpoint to:\n- Discover available framework codes before creating information requests\n- Validate framework codes against the audit's framework\n- Get context about what framework codes are available for the audit type\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#ListInformationRequestsRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of information requests to return per page." + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from a previous response. Provide to fetch the next page of results." + } + }, + "changedSinceDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "changedSinceDate", + "smithy.api#documentation": "Includes all information requests that have changed since changedSinceDate.\nConsiders creationDate, modificationDate, and deletionDate timestamps when determining changes." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#ListInformationRequests": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListInformationRequestsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequest" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/information-requests", + "code": 200 + }, + "smithy.api#documentation": "List information requests for an audit\n\nRetrieves a paginated list of all information requests for an audit, enabling\nexternal audit management systems to display and track evidence requests.\n\nThis endpoint always includes soft-deleted records (where `deletionDate !== null`).\nClients should check the `deletionDate` field to identify and handle deleted records\nappropriately in their systems.\n\nThis endpoint supports delta synchronization via the `changedSinceDate` parameter,\nallowing efficient polling for changes without retrieving the entire dataset.\n\nPagination usage:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage` to see if more data exists\n3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request\n4. Repeat until `hasNextPage` is false\n\nDelta sync usage:\n1. Store the timestamp of your last sync\n2. Pass that timestamp as `changedSinceDate`\n3. Only requests created, modified, or deleted since that timestamp are returned\n4. Process updates and soft-deletes by checking the `deletionDate` field\n5. Update your last sync timestamp to the current time\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#CreateInformationRequestRequestFrameworkCodesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Framework codes this request addresses.\nAn empty array if no framework codes are associated." + } + }, + "com.vanta.auditor_api#CreateInformationRequestRequestAdditionalControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Control IDs to link directly to this request, beyond those automatically\nmapped from framework codes. Each must be the `id` of an existing control in\nthe customer's organization (the identifier returned by the controls endpoints).\nThe request is rejected if any ID does not match a control.\nOmit or pass an empty array for no direct control links." + } + }, + "com.vanta.auditor_api#CreateInformationRequestRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "External unique ID to prevent duplicate requests across audit systems.\nMust be unique within the audit. Used for idempotency.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Short, descriptive title summarizing what is being requested.\nMust be at least 1 character.", + "smithy.api#required": {} + } + }, + "requestType": { + "target": "com.vanta.auditor_api#InformationRequestType", + "traits": { + "smithy.api#documentation": "Scope of evidence required.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Detailed description explaining what evidence is needed.\nHelps the customer understand what to submit. Optional.", + "com.distilled.openapi#nullable": {} + } + }, + "frameworkCodes": { + "target": "com.vanta.auditor_api#CreateInformationRequestRequestFrameworkCodesList", + "traits": { + "smithy.api#documentation": "Framework codes this request addresses.\nAn empty array if no framework codes are associated.", + "smithy.api#required": {} + } + }, + "cadence": { + "target": "com.vanta.auditor_api#InformationRequestCadence", + "traits": { + "smithy.api#documentation": "How frequently this request recurs. Null or omitted for one-time requests.", + "com.distilled.openapi#nullable": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Deadline for fulfilling this request. Null or omitted if no deadline.\nFormat: ISO 8601 UTC timestamp.", + "com.distilled.openapi#nullable": {} + } + }, + "evidenceCaptureDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Start date of the audit period. Evidence before this date may not be accepted.\nNull or omitted if not restricted.\nFormat: ISO 8601 UTC timestamp.", + "com.distilled.openapi#nullable": {} + } + }, + "additionalControlIds": { + "target": "com.vanta.auditor_api#CreateInformationRequestRequestAdditionalControlIdsList", + "traits": { + "smithy.api#documentation": "Control IDs to link directly to this request, beyond those automatically\nmapped from framework codes. Each must be the `id` of an existing control in\nthe customer's organization (the identifier returned by the controls endpoints).\nThe request is rejected if any ID does not match a control.\nOmit or pass an empty array for no direct control links." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#CreateInformationRequest": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#CreateInformationRequestRequest" + }, + "output": { + "target": "com.vanta.auditor_api#InformationRequest" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/audits/{auditId}/information-requests", + "code": 200 + }, + "smithy.api#documentation": "Create a new information request\n\nCreates a new information request for an audit during audit setup or as requirements evolve.\n\nAfter creating all information requests, use POST /audits/{auditId}/share-information-request-list\nto make them visible to the customer organization. Until shared, requests remain in draft state\nvisible only to auditors.\n\nNew requests are created in an initial state indicating evidence is needed. The status\nprogresses through the workflow: initial state → awaiting review → approved or flagged.\n\nRate limit: 600 requests / minute." + } + }, + "com.vanta.auditor_api#GetInformationRequestRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#GetInformationRequest": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#GetInformationRequestRequest" + }, + "output": { + "target": "com.vanta.auditor_api#InformationRequest" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/information-requests/{requestId}", + "code": 200 + }, + "smithy.api#documentation": "Get an information request by ID\n\nRetrieves a single information request by its ID for an audit, allowing external\naudit management systems to fetch the latest state of a specific request without\npaginating through the full list.\n\nSoft-deleted records (where `deletionDate !== null`) are included in the response.\nClients should check `deletionDate` to determine whether the request has been deleted.\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#UpdateInformationRequestRequestFrameworkCodesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The framework codes this request addresses.\nAn empty array if no framework codes are associated." + } + }, + "com.vanta.auditor_api#UpdateInformationRequestRequestAdditionalControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Control IDs to link directly to this request, beyond those automatically\nmapped from framework codes. Replaces the existing set: pass the complete\ndesired list, an empty array to clear all direct control links, or omit to\nleave them unchanged. Each must be the `id` of an existing control in the\ncustomer's organization (the identifier returned by the controls endpoints).\nThe request is rejected if any ID does not match a control." + } + }, + "com.vanta.auditor_api#UpdateInformationRequestRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "frameworkCodes": { + "target": "com.vanta.auditor_api#UpdateInformationRequestRequestFrameworkCodesList", + "traits": { + "smithy.api#documentation": "The framework codes this request addresses.\nAn empty array if no framework codes are associated." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Detailed description of what evidence is needed.", + "com.distilled.openapi#nullable": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Deadline for fulfilling this request. Null if no deadline.\nFormat: ISO 8601 UTC timestamp.", + "com.distilled.openapi#nullable": {} + } + }, + "evidenceCaptureDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Start date of the audit period. Evidence before this date may not be accepted.\nNull if not restricted. Format: ISO 8601 UTC timestamp.", + "com.distilled.openapi#nullable": {} + } + }, + "requestType": { + "target": "com.vanta.auditor_api#InformationRequestType", + "traits": { + "smithy.api#documentation": "Scope of evidence required." + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Short, descriptive title." + } + }, + "cadence": { + "target": "com.vanta.auditor_api#InformationRequestCadence", + "traits": { + "smithy.api#documentation": "How frequently this request recurs." + } + }, + "additionalControlIds": { + "target": "com.vanta.auditor_api#UpdateInformationRequestRequestAdditionalControlIdsList", + "traits": { + "smithy.api#documentation": "Control IDs to link directly to this request, beyond those automatically\nmapped from framework codes. Replaces the existing set: pass the complete\ndesired list, an empty array to clear all direct control links, or omit to\nleave them unchanged. Each must be the `id` of an existing control in the\ncustomer's organization (the identifier returned by the controls endpoints).\nThe request is rejected if any ID does not match a control." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#UpdateInformationRequest": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#UpdateInformationRequestRequest" + }, + "output": { + "target": "com.vanta.auditor_api#InformationRequest" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/audits/{auditId}/information-requests/{requestId}", + "code": 200 + }, + "smithy.api#documentation": "Update an information request for an audit\n\nUpdates an existing information request for an audit, allowing modification of request\ndetails as audit requirements evolve. Supports partial updates where only specified\nfields are changed; omitted fields remain unchanged.\n\nCommon use cases:\n- Updating due dates as audit timelines shift\n- Refining descriptions to clarify requirements\n- Adjusting request type\n\nNote: The `modificationDate` is automatically updated to the current timestamp\nwhen any field is changed.\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#DeleteInformationRequestRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#DeleteInformationRequest": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#DeleteInformationRequestRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/audits/{auditId}/information-requests/{requestId}", + "code": 200 + }, + "smithy.api#documentation": "Delete an information request for an audit\n\nDeletes an information request for an audit. This performs a soft delete, marking\nthe request as deleted (setting `deletionDate`) while preserving it in the system\nfor audit history and compliance tracking.\n\nSoft deletion allows:\n- Maintaining complete audit trail of all requests ever created\n- Retrieving deleted requests via `changedSinceDate` for synchronization\n\nAfter deletion:\n- The request will not appear in normal list responses (without `changedSinceDate`)\n- The request's `deletionDate` field will be populated\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#AcceptInformationRequestEvidenceRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "auditorEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the auditor accepting the evidence.\nMust match an existing Vanta user who belongs to the audit firm making the API request.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#AcceptInformationRequestEvidence": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#AcceptInformationRequestEvidenceRequest" + }, + "output": { + "target": "com.vanta.auditor_api#InformationRequest" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/audits/{auditId}/information-requests/{requestId}/accept-evidence", + "code": 200 + }, + "smithy.api#documentation": "Accept evidence for an information request\n\nAccepts evidence for an information request, confirming that all submitted evidence\nmeets audit requirements. This action changes the request's approvalStatus to\nan approved state and creates an activity log entry.\n\nAcceptance workflow:\n1. Auditor reviews submitted evidence\n2. If evidence is satisfactory, auditor calls this endpoint\n3. Request status changes to approved state and is considered complete for this audit cycle\n\nUse this endpoint when:\n- All required evidence has been submitted\n- Evidence quality meets audit standards\n- Evidence addresses all specified framework codes\n- No additional information is needed\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#ListInformationRequestActivityRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of activity entries to return per page." + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from a previous response. Provide to fetch the next page of activity logs." + } + }, + "changedSinceDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "changedSinceDate", + "smithy.api#documentation": "Includes activity logs that have changed since changedSinceDate." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestActivityLog": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestActivityLogResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#InformationRequestActivityLog": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the activity log entry within Vanta's system.\nFormat: ObjectId as a string (e.g., \"6890e473dce1da5d8406f5e7\").", + "smithy.api#required": {} + } + }, + "activityType": { + "target": "com.vanta.auditor_api#InformationRequestActivityType", + "traits": { + "smithy.api#documentation": "Type of activity that occurred on the information request.\nDetermines which additional fields are populated.", + "smithy.api#required": {} + } + }, + "timestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the activity occurred.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + }, + "userEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the user who performed the activity.\nNull for system-generated activities (rare, such as automated status changes).\nThis email uniquely identifies users across systems.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "oldStatus": { + "target": "com.vanta.auditor_api#InformationRequestActivityLogOldStatus", + "traits": { + "smithy.api#documentation": "Previous approval status before the status change.\nOnly populated for status change activities. Null for all other activity types.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "newStatus": { + "target": "com.vanta.auditor_api#InformationRequestActivityLogNewStatus", + "traits": { + "smithy.api#documentation": "New approval status after the status change.\nOnly populated for status change activities. Null for all other activity types.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional explanation for the status change.\nOnly populated for status change activities when a reason is provided\n(e.g., when flagging evidence). Null for all other cases.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "fillOutcome": { + "target": "com.vanta.auditor_api#EvidenceFillOutcome", + "traits": { + "smithy.api#documentation": "Result of an automated evidence fill.\nOnly populated for evidence fill activities. Null for all other activity types.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "sourceInformationRequestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Identifier of the information request this one was copied from when its\naudit was duplicated.\nOnly populated for audit-duplication trail activities. Null for all other activity types.\nFormat: ObjectId as a string.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "sourceAuditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Identifier of the audit this request's audit was duplicated from.\nOnly populated for audit-duplication trail activities. Null for all other activity types.\nFormat: ObjectId as a string.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Activity log entry tracking changes and actions on an information request.\n\nThe activity log provides a complete audit trail of all operations performed\non an information request, including status changes, evidence uploads, edits,\nand evidence sharing. This enables tracking compliance activities and understanding\nthe request's history." + } + }, + "com.vanta.auditor_api#InformationRequestActivityType": { + "type": "enum", + "members": { + "AUDIT_DUPLICATION_AUDIT_TRAIL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDIT_DUPLICATION_AUDIT_TRAIL" + } + }, + "AUDIT_INFORMATION_REQUEST_EVIDENCE_FILL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDIT_INFORMATION_REQUEST_EVIDENCE_FILL" + } + }, + "CHANGE_STATUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CHANGE_STATUS" + } + }, + "EDIT_REQUEST": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EDIT_REQUEST" + } + }, + "REMOVE_EVIDENCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "REMOVE_EVIDENCE" + } + }, + "SHARE_EVIDENCE_WITH_AUDITOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SHARE_EVIDENCE_WITH_AUDITOR" + } + }, + "UPLOAD_EVIDENCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UPLOAD_EVIDENCE" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#InformationRequestActivityLogOldStatus": { + "type": "enum", + "members": { + "READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_AUDIT" + } + }, + "NEEDS_EVIDENCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NEEDS_EVIDENCE" + } + }, + "AUDITOR_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDITOR_APPROVED" + } + }, + "AUDITOR_FLAGGED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDITOR_FLAGGED" + } + }, + "READY_FOR_INTERNAL_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_INTERNAL_REVIEW" + } + } + }, + "traits": { + "smithy.api#documentation": "Previous approval status before the status change.\nOnly populated for status change activities. Null for all other activity types." + } + }, + "com.vanta.auditor_api#InformationRequestActivityLogNewStatus": { + "type": "enum", + "members": { + "READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_AUDIT" + } + }, + "NEEDS_EVIDENCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NEEDS_EVIDENCE" + } + }, + "AUDITOR_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDITOR_APPROVED" + } + }, + "AUDITOR_FLAGGED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDITOR_FLAGGED" + } + }, + "READY_FOR_INTERNAL_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_INTERNAL_REVIEW" + } + } + }, + "traits": { + "smithy.api#documentation": "New approval status after the status change.\nOnly populated for status change activities. Null for all other activity types." + } + }, + "com.vanta.auditor_api#EvidenceFillOutcome": { + "type": "enum", + "members": { + "SUCCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SUCCESS" + } + }, + "PARTIAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PARTIAL" + } + }, + "FAILED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FAILED" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestActivityLogResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#InformationRequestActivityLog" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestActivityLogResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestActivityLogResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListInformationRequestActivity": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListInformationRequestActivityRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestActivityLog" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/information-requests/{requestId}/activity", + "code": 200 + }, + "smithy.api#documentation": "List information request activity\n\nRetrieves a paginated list of activity logs for an information request, providing\na complete audit trail of all changes and actions.\n\nThis endpoint supports delta synchronization via the `changedSinceDate` parameter,\nallowing efficient polling for changes without retrieving the entire dataset.\n\nPagination usage:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage` to see if more data exists\n3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request\n4. Repeat until `hasNextPage` is false\n\nDelta sync usage:\n1. Store the timestamp of your last sync\n2. Pass that timestamp as `changedSinceDate`\n3. Only activity created since that timestamp is returned\n4. Process updates to track all changes to the information request\n5. Update your last sync timestamp to the current time\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#ListCommentsForInformationRequestRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of comments to return per page." + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from a previous response. Provide to fetch the next page of comments." + } + }, + "changedSinceDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "changedSinceDate", + "smithy.api#documentation": "Includes all comments that have changed since changedSinceDate.\nConsiders creationDate, modificationDate, and deletionDate timestamps when determining changes." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestComment": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestCommentResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#InformationRequestComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the comment within Vanta's system.\nFormat: ObjectId as a string (e.g., \"6890e473dce1da5d8406f5e7\").", + "smithy.api#required": {} + } + }, + "text": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The comment message content.\nCan include explanations, questions, or clarifications about the information request.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the comment was created.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + }, + "modificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the comment was last edited.\nNull if the comment has never been modified.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "deletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the comment was soft-deleted.\nNull if the comment has not been deleted.\nSoft deletes retain the comment for audit history while hiding it from normal operations.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the comment author.\nThis email uniquely identifies users between Vanta and external audit systems.\nNull when the comment author can't be matched to a Vanta user.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "authorName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Human-readable display name of the comment author.\nNull if the author's name is not available (e.g., user was deleted).\nThis enables correct author attribution in integrations where users cannot\nbe reliably matched across systems by email alone.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A comment on an information request enables communication between auditors\nand customers regarding evidence requirements and submissions.\n\nThese threaded discussions help clarify requests, explain or resolve questions about evidence,\nand are always visible to both parties once created." + } + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestCommentResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#InformationRequestComment" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestCommentResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestCommentResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListCommentsForInformationRequest": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListCommentsForInformationRequestRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestComment" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/information-requests/{requestId}/comments", + "code": 200 + }, + "smithy.api#documentation": "List comments for an information request\n\nRetrieves a paginated list of comments for an information request, enabling\nauditors to view communication history and collaborate with customers.\n\nThis endpoint always includes soft-deleted records (where `deletionDate !== null`).\nClients should check the `deletionDate` field to identify and handle deleted records\nappropriately in their systems.\n\nThis endpoint supports delta synchronization via the `changedSinceDate` parameter,\nallowing efficient polling for changes without retrieving the entire dataset.\n\nPagination usage:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage` to see if more data exists\n3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request\n4. Repeat until `hasNextPage` is false\n\nDelta sync usage:\n1. Store the timestamp of your last sync\n2. Pass that timestamp as `changedSinceDate`\n3. Only comments created, modified, or deleted since that timestamp are returned\n4. Process updates, including soft-deletes (deletionDate !== null)\n5. Update your last sync timestamp to the current time\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#CreateCommentForInformationRequestRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "text": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The text content of the comment.\nMust be at least 1 character. Can include questions, clarifications,\nor explanations related to the information request.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the comment author.\nMust match an existing Vanta user who belongs to the audit firm making the API request.\nThis email uniquely identifies the author across systems.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the comment was created in the external audit management system.\nThis allows synchronizing comment timestamps from external systems.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#CreateCommentForInformationRequest": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#CreateCommentForInformationRequestRequest" + }, + "output": { + "target": "com.vanta.auditor_api#InformationRequestComment" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/audits/{auditId}/information-requests/{requestId}/comments", + "code": 200 + }, + "smithy.api#documentation": "Create a comment for an information request\n\nCreates a new comment for an information request. The comment author must be an auditor\nin the audit firm making the request. The comment will be associated with the information\nrequest and visible to all authorized users.\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#GetCommentForInformationRequestRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "commentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#GetCommentForInformationRequest": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#GetCommentForInformationRequestRequest" + }, + "output": { + "target": "com.vanta.auditor_api#InformationRequestComment" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/information-requests/{requestId}/comments/{commentId}", + "code": 200 + }, + "smithy.api#documentation": "Get an information request comment by ID\n\nRetrieves a single comment on an information request by its ID.\n\nSoft-deleted comments (where `deletionDate !== null`) are included in the\nresponse. Clients should check `deletionDate` to determine whether the\ncomment has been deleted. This matches\n`GET /audits/{auditId}/information-requests/{requestId}/comments`, which\nsupports `changedSinceDate` and returns soft-deleted comments for delta sync.\n\nComments remain fetchable when the parent information request has been\nsoft-deleted, so delayed webhook consumers can still resolve a comment ID\nafter the request is deleted.\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#UpdateCommentForInformationRequestRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "commentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "text": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The text content of the comment.\nMust be at least 1 character. Can include questions, clarifications,\nor explanations related to the information request.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the comment author.\nMust match an existing Vanta user who belongs to the audit firm making the API request.\nThis email uniquely identifies the author across systems.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#UpdateCommentForInformationRequest": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#UpdateCommentForInformationRequestRequest" + }, + "output": { + "target": "com.vanta.auditor_api#InformationRequestComment" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/audits/{auditId}/information-requests/{requestId}/comments/{commentId}", + "code": 200 + }, + "smithy.api#documentation": "Update a comment for an information request\n\nUpdates an existing comment for an information request. Only the original author\nof the comment can update it. The author is identified by their email address,\nwhich must match the email of the user who created the comment.\n\nRate limit: 25 requests / minute." + } + }, + "com.vanta.auditor_api#DeleteCommentForInformationRequestRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "commentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the comment author.\nMust match an existing Vanta user who belongs to the audit firm making the API request.\nThis email uniquely identifies the author across systems.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#DeleteCommentForInformationRequest": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#DeleteCommentForInformationRequestRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/audits/{auditId}/information-requests/{requestId}/comments/{commentId}", + "code": 200 + }, + "smithy.api#documentation": "Delete a comment for an information request\n\nDeletes an existing comment for an information request. Only the original author\nof the comment can delete it. The author is identified by their email address,\nwhich must match the email of the user who created the comment.\n\nRate limit: 25 requests / minute." + } + }, + "com.vanta.auditor_api#InformationRequestSupportedEvidenceType": { + "type": "enum", + "members": { + "UPLOADED_DOCUMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UPLOADED_DOCUMENT" + } + }, + "OBSERVATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OBSERVATION" + } + }, + "LINK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LINK" + } + }, + "VANTA_DOCUMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VANTA_DOCUMENT" + } + }, + "VANTA_POLICY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VANTA_POLICY" + } + }, + "VANTA_TEST": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VANTA_TEST" + } + }, + "VANTA_TEST_SNAPSHOT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VANTA_TEST_SNAPSHOT" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListInformationRequestEvidenceRequestEvidenceTypeMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#InformationRequestSupportedEvidenceType" + }, + "traits": {} + }, + "com.vanta.auditor_api#ListInformationRequestEvidenceRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of evidence entries to return per page." + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from a previous response. Provide to fetch the next page of evidence." + } + }, + "changedSinceDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "changedSinceDate", + "smithy.api#documentation": "Includes all evidence that have changed since changedSinceDate. Considers creationDate,\nmodificationDate, deletionDate, and visibleToAuditorDate timestamps when determining changes." + } + }, + "evidenceTypeMatchesAny": { + "target": "com.vanta.auditor_api#ListInformationRequestEvidenceRequestEvidenceTypeMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "evidenceTypeMatchesAny", + "smithy.api#documentation": "Limits results to the provided evidence types. Must include at least one of:\nUPLOADED_DOCUMENT, OBSERVATION, LINK, VANTA_DOCUMENT, VANTA_POLICY, VANTA_TEST,\nVANTA_TEST_SNAPSHOT." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestEvidence": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestEvidenceResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#InformationRequestEvidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the evidence within Vanta's system.\nFormat: ObjectId as a string (e.g., \"6890e473dce1da5d8406f5e7\").", + "smithy.api#required": {} + } + }, + "evidenceType": { + "target": "com.vanta.auditor_api#InformationRequestSupportedEvidenceType", + "traits": { + "smithy.api#documentation": "Type of evidence attached to this information request.\nDetermines the structure of the `evidence` field.", + "smithy.api#required": {} + } + }, + "visibleToAuditorDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the evidence was made visible to the auditor.\nNull if the customer has not yet shared this evidence with the auditor.\nEvidence must be shared before the auditor can review it.\nFormat: ISO 8601 UTC timestamp.", + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the evidence was created/uploaded.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + }, + "modificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the evidence was last modified.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + }, + "deletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Timestamp when the evidence was soft-deleted.\nNull if the evidence has not been deleted.\nSoft deletes retain evidence in the system for audit history while hiding\nit from normal operations.\nFormat: ISO 8601 UTC timestamp.", + "com.distilled.openapi#nullable": {} + } + }, + "evidence": { + "target": "com.vanta.auditor_api#InformationRequestEvidenceUnion", + "traits": { + "smithy.api#documentation": "The evidence content. Structure varies based on evidenceType.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#InformationRequestEvidenceUnion": { + "type": "union", + "members": { + "UploadedDocumentEvidence": { + "target": "com.vanta.auditor_api#UploadedDocumentEvidence" + }, + "LinkEvidence": { + "target": "com.vanta.auditor_api#LinkEvidence" + }, + "ObservationEvidence": { + "target": "com.vanta.auditor_api#ObservationEvidence" + }, + "VantaDocumentEvidence": { + "target": "com.vanta.auditor_api#VantaDocumentEvidence" + }, + "VantaPolicyEvidence": { + "target": "com.vanta.auditor_api#VantaPolicyEvidence" + }, + "VantaTestEvidence": { + "target": "com.vanta.auditor_api#VantaTestEvidence" + }, + "VantaTestSnapshotEvidence": { + "target": "com.vanta.auditor_api#VantaTestSnapshotEvidence" + } + }, + "traits": { + "smithy.api#documentation": "Union type representing the different forms of evidence content.\nThe specific type is determined by the `evidenceType` field in InformationRequestEvidence." + } + }, + "com.vanta.auditor_api#UploadedDocumentEvidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the uploaded document in Vanta's system.", + "smithy.api#required": {} + } + }, + "filename": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The original filename of the uploaded document.\nUndefined if the filename was not captured during upload." + } + }, + "mimeType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The MIME type of the document indicating its file format.\nCommon types: \"application/pdf\", \"image/png\", \"image/jpeg\", \"text/plain\"", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A presigned URL for downloading the document.\nThis URL is temporary and expires after a limited time.\nRequest a new evidence list to get a fresh URL if expired.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Evidence in the form of an uploaded document file.\nThe URL is a temporary presigned URL that expires after a certain period." + } + }, + "com.vanta.auditor_api#LinkEvidence": { + "type": "structure", + "members": { + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title or descriptive name for the link.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional description providing additional context about the link." + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The URL pointing to the external documentation or resource.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Evidence in the form of a link to external documentation or resources." + } + }, + "com.vanta.auditor_api#ObservationEvidence": { + "type": "structure", + "members": { + "observationDetails": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The text content of the observation.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Evidence in the form of a text observation or note." + } + }, + "com.vanta.auditor_api#VantaDocumentEvidence": { + "type": "structure", + "members": { + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title of the document as displayed in Vanta.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional description providing additional context about the document." + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date when the document version expires and should be renewed.\nUndefined if no expiration is set.\nFormat: ISO 8601 UTC timestamp." + } + }, + "addedBy": { + "target": "com.vanta.auditor_api#VantaDocumentEvidenceAddedBy", + "traits": { + "smithy.api#documentation": "Information about the user who added this file version to the document.\nUndefined if the user information is not available." + } + }, + "documentVersionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the document version submitted as evidence.", + "smithy.api#required": {} + } + }, + "file": { + "target": "com.vanta.auditor_api#VantaDocumentEvidenceFile", + "traits": { + "smithy.api#documentation": "The file or link associated with this document version.\nUse the `type` discriminator to determine whether it's an uploaded file\nor an external link.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Evidence in the form of a Vanta Document.\nVanta Documents are managed documents with metadata like expiration dates\nand versioning. They can either be uploaded files stored in Vanta or\nlinks to external documentation." + } + }, + "com.vanta.auditor_api#VantaDocumentEvidenceAddedBy": { + "type": "structure", + "members": { + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Information about the user who added this file version to the document.\nUndefined if the user information is not available." + } + }, + "com.vanta.auditor_api#VantaDocumentUploadedEvidence": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.auditor_api#VantaDocumentUploadedEvidenceType", + "traits": { + "smithy.api#documentation": "Discriminator to identify this as an uploaded file.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the file version in Vanta's system.", + "smithy.api#required": {} + } + }, + "filename": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The original filename of the uploaded document.\nUndefined if the filename was not captured during upload." + } + }, + "mimeType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The MIME type of the document indicating its file format.\nCommon types: \"application/pdf\", \"image/png\", \"image/jpeg\", \"text/plain\"", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A presigned URL for downloading the document.\nThis URL is temporary and expires after a limited time.\nRequest a new evidence list to get a fresh URL if expired.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Represents an uploaded file in a Vanta Document.\nThe file is stored in Vanta's system and accessed via a presigned URL." + } + }, + "com.vanta.auditor_api#VantaDocumentUploadedEvidenceType": { + "type": "enum", + "members": { + "UPLOADED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "uploaded" + } + } + }, + "traits": { + "smithy.api#documentation": "Discriminator to identify this as an uploaded file." + } + }, + "com.vanta.auditor_api#VantaDocumentLinkEvidence": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.auditor_api#VantaDocumentLinkEvidenceType", + "traits": { + "smithy.api#documentation": "Discriminator to identify this as an external link.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the file version in Vanta's system.", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The URL pointing to the external documentation or resource.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Represents an external link in a Vanta Document.\nThe link points to documentation hosted outside of Vanta's system." + } + }, + "com.vanta.auditor_api#VantaDocumentLinkEvidenceType": { + "type": "enum", + "members": { + "LINK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "link" + } + } + }, + "traits": { + "smithy.api#documentation": "Discriminator to identify this as an external link." + } + }, + "com.vanta.auditor_api#VantaDocumentEvidenceFile": { + "type": "union", + "members": { + "VantaDocumentUploadedEvidence": { + "target": "com.vanta.auditor_api#VantaDocumentUploadedEvidence" + }, + "VantaDocumentLinkEvidence": { + "target": "com.vanta.auditor_api#VantaDocumentLinkEvidence" + } + }, + "traits": { + "smithy.api#documentation": "The file or link associated with this document version.\nUse the `type` discriminator to determine whether it's an uploaded file\nor an external link." + } + }, + "com.vanta.auditor_api#VantaPolicyEvidence": { + "type": "structure", + "members": { + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title of the policy as displayed in Vanta.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional description providing additional context about the policy." + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date when the policy version expires and should be renewed.\nUndefined if no expiration is set.\nFormat: ISO 8601 UTC timestamp." + } + }, + "lastEditedBy": { + "target": "com.vanta.auditor_api#VantaPolicyEvidenceLastEditedBy", + "traits": { + "smithy.api#documentation": "Information about the user who last edited this policy version.\nUndefined if the user information is not available." + } + }, + "policyId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The policy type this evidence belongs to (e.g. \"information-security-policy-bsi\").\nPolicies prefixed with \"custom-\" are customer-defined; others are Vanta-provided templates.", + "smithy.api#required": {} + } + }, + "policyVersionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier of the approved policy version that was submitted as evidence.\nA new version is created each time a policy is updated and approved.", + "smithy.api#required": {} + } + }, + "policyVersionFileId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier of the locale-specific file within the policy version.\nEach policy version may contain multiple files, one per supported language.", + "smithy.api#required": {} + } + }, + "file": { + "target": "com.vanta.auditor_api#VantaPolicyEvidenceFile", + "traits": { + "smithy.api#documentation": "The uploaded policy file for this version.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Evidence in the form of a Vanta Policy.\nVanta Policies are compliance policies with metadata like locale,\neffective dates, and versioning. Policies are always uploaded files\nstored in Vanta's system." + } + }, + "com.vanta.auditor_api#VantaPolicyEvidenceLastEditedBy": { + "type": "structure", + "members": { + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Information about the user who last edited this policy version.\nUndefined if the user information is not available." + } + }, + "com.vanta.auditor_api#VantaPolicyEvidenceFile": { + "type": "structure", + "members": { + "effectiveOrCreationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date when this policy version became effective, or when it was created.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + }, + "locale": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The locale/language of the policy document.\nExamples: \"EN\" for English, \"ES\" for Spanish, \"FR\" for French", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A presigned URL for downloading the policy document.\nThis URL is temporary and expires after a limited time.\nRequest a new evidence list to get a fresh URL if expired.", + "smithy.api#required": {} + } + }, + "mimeType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The MIME type of the policy document indicating its file format.\nCommon types: \"application/pdf\", \"application/msword\"", + "smithy.api#required": {} + } + }, + "filename": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The original filename of the uploaded policy document.\nUndefined if the filename was not captured during upload." + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the uploaded policy file in Vanta's system.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The uploaded policy file for this version." + } + }, + "com.vanta.auditor_api#VantaTestEvidence": { + "type": "structure", + "members": { + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title of the test run as displayed in Vanta.", + "smithy.api#required": {} + } + }, + "testId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the test in Vanta's system.", + "smithy.api#required": {} + } + }, + "snapshotId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the point-in-time capture of this test run's evidence.\nA snapshot is an immutable record of all files (workpapers, raw data, etc.)\ngenerated during a single test execution.", + "smithy.api#required": {} + } + }, + "testRunStatus": { + "target": "com.vanta.auditor_api#VantaTestRunStatus", + "traits": { + "smithy.api#documentation": "The outcome status of the test run.", + "smithy.api#required": {} + } + }, + "executedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date and time when the test was executed.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + }, + "fileType": { + "target": "com.vanta.auditor_api#VantaTestFileType", + "traits": { + "smithy.api#documentation": "The type of evidence file included in this evidence.", + "smithy.api#required": {} + } + }, + "file": { + "target": "com.vanta.auditor_api#VantaTestEvidenceFile", + "traits": { + "smithy.api#documentation": "The evidence file for this test run.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Evidence in the form of a Vanta automated test run.\nVanta Tests are automated compliance tests with metadata like test status,\nexecution time, and file type. Tests generate evidence files that can be\nworkpapers, raw data, or API request logs." + } + }, + "com.vanta.auditor_api#VantaTestRunStatus": { + "type": "enum", + "members": { + "NA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NA" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "FAIL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FAIL" + } + }, + "PASS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PASS" + } + }, + "INVALID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INVALID" + } + }, + "DISABLED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DISABLED" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestFileType": { + "type": "enum", + "members": { + "TEST_EVIDENCE_WORKPAPER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TEST_EVIDENCE_WORKPAPER" + } + }, + "TEST_RAW_DATA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TEST_RAW_DATA" + } + }, + "OUT_OF_SCOPE_RESOURCES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OUT_OF_SCOPE_RESOURCES" + } + }, + "API_REQUESTS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "API_REQUESTS" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestEvidenceFile": { + "type": "structure", + "members": { + "mimeType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The MIME type of the evidence file.\nCommon types: \"application/pdf\" for workpapers, \"text/csv\" for raw data", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A presigned URL for downloading the evidence file.\nThis URL is temporary and expires after a limited time.\nRequest a new evidence list to get a fresh URL if expired.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The evidence file for this test run." + } + }, + "com.vanta.auditor_api#VantaTestSnapshotEvidence": { + "type": "structure", + "members": { + "snapshotId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the point-in-time capture of this test run's evidence.\nA snapshot is an immutable record of all files (workpapers, raw data, etc.)\ngenerated during a single test execution.", + "smithy.api#required": {} + } + }, + "testId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the test in Vanta's system.", + "smithy.api#required": {} + } + }, + "testRunId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the test run this snapshot was captured from.", + "smithy.api#required": {} + } + }, + "testRunTitle": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title of the test run as displayed in Vanta.", + "smithy.api#required": {} + } + }, + "testRunStatus": { + "target": "com.vanta.auditor_api#VantaTestSnapshotEvidenceTestRunStatus", + "traits": { + "smithy.api#documentation": "The outcome status of the test run.", + "smithy.api#required": {} + } + }, + "testRunExecutedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date and time when the test was executed.\nFormat: ISO 8601 UTC timestamp.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Evidence in the form of a Vanta automated test run snapshot.\n\nUnlike VantaTestEvidence (which represents a single file within a test run's\nevidence packet), a snapshot represents the entire test-run bundle. Use the\ndedicated snapshot detail endpoint to retrieve the files associated with a\nsnapshot." + } + }, + "com.vanta.auditor_api#VantaTestSnapshotEvidenceTestRunStatus": { + "type": "enum", + "members": { + "NA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NA" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "FAIL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FAIL" + } + }, + "PASS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PASS" + } + }, + "INVALID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INVALID" + } + }, + "DISABLED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DISABLED" + } + } + }, + "traits": { + "smithy.api#documentation": "The outcome status of the test run." + } + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestEvidenceResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#InformationRequestEvidence" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseInformationRequestEvidenceResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestEvidenceResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListInformationRequestEvidence": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListInformationRequestEvidenceRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseInformationRequestEvidence" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/information-requests/{requestId}/evidence", + "code": 200 + }, + "smithy.api#documentation": "List evidence for an information request\n\nRetrieves a paginated list of all evidence attached to an information request,\nenabling auditors to review evidence submitted by customers.\n\nThis endpoint always includes soft-deleted records (where `deletionDate !== null`).\nClients should check the `deletionDate` field to identify and handle deleted records\nappropriately in their systems.\n\nThis endpoint supports delta synchronization via the `changedSinceDate` parameter,\nallowing efficient polling for changes without retrieving the entire dataset.\n\nPagination usage:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage` to see if more data exists\n3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request\n4. Repeat until `hasNextPage` is false\n\nDelta sync usage:\n1. Store the timestamp of your last sync\n2. Pass that timestamp as `changedSinceDate`\n3. Only evidence created, modified, shared, or deleted since that timestamp is returned\n4. Process updates, including soft-deletes (deletionDate !== null)\n5. Update your last sync timestamp to the current time\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#GetInformationRequestEvidenceRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "evidenceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#GetInformationRequestEvidence": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#GetInformationRequestEvidenceRequest" + }, + "output": { + "target": "com.vanta.auditor_api#InformationRequestEvidence" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/information-requests/{requestId}/evidence/{evidenceId}", + "code": 200 + }, + "smithy.api#documentation": "Get information request evidence by ID\n\nRetrieves a single evidence item attached to an information request by its ID.\n\nThis endpoint always includes soft-deleted evidence (where `deletionDate !== null`),\nso an evidence ID surfaced by a `changedSinceDate` delta sync stays fetchable after\nthe evidence is deleted. Clients should check the `deletionDate` field to identify\nand handle deleted records appropriately in their systems.\n\nEvidence is only resolvable while its information request exists. Once the\nrequest itself is deleted, this endpoint reports the request as not found —\nmatching `GET /audits/{auditId}/information-requests/{requestId}/evidence`.\nClients reconciling a deleted request should treat its evidence as gone with it.\n\nEvidence that the customer has not shared with the auditor is reported as not\nfound, rather than distinguishing it from an ID that does not exist.\n\nRate limit: 250 requests / minute." + } + }, + "com.vanta.auditor_api#GetInformationRequestTestSnapshotEvidenceDetailRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "evidenceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#VantaTestSnapshotEvidenceDetail": { + "type": "structure", + "members": { + "testId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the test in Vanta's system.", + "smithy.api#required": {} + } + }, + "testName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The display name of the test.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A short description of what the test checks.", + "smithy.api#required": {} + } + }, + "evaluationCriteria": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Longer-form, formatted description of the test. Null when unset.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "integrations": { + "target": "com.vanta.auditor_api#VantaTestSnapshotEvidenceDetailIntegrationsList", + "traits": { + "smithy.api#documentation": "Integrations whose data feeds the test.", + "smithy.api#required": {} + } + }, + "slaRemediation": { + "target": "com.vanta.auditor_api#VantaTestSnapshotSlaRemediation", + "traits": { + "smithy.api#documentation": "SLA remediation policy attached to the test, or null when no SLA is set.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "rawTestData": { + "target": "com.vanta.auditor_api#VantaTestSnapshotEvidenceDetailRawTestDataList", + "traits": { + "smithy.api#documentation": "Raw test data captured at snapshot time.", + "smithy.api#required": {} + } + }, + "outOfScopeResources": { + "target": "com.vanta.auditor_api#VantaTestSnapshotOutOfScopeResources", + "traits": { + "smithy.api#documentation": "Resources excluded from the test at snapshot time. Absent when the\nsnapshot data could not be loaded; clients should treat a missing\nfield as \"unknown\" rather than \"nothing excluded\"." + } + }, + "apiRequests": { + "target": "com.vanta.auditor_api#VantaTestSnapshotEvidenceDetailApiRequestsList", + "traits": { + "smithy.api#documentation": "API requests captured during the test run. Absent when the snapshot\ndata could not be loaded. Empty array when the test does not perform\nAPI introspection." + } + } + }, + "traits": { + "smithy.api#documentation": "Detail response for a captured automated-test snapshot evidence row.\n\nCombines the test-level metadata (description, integrations, SLA\nremediation) with a uniform raw-data array so external clients see the\nsame shape regardless of whether the snapshot was structured or\nunstructured." + } + }, + "com.vanta.auditor_api#VantaTestSnapshotIntegration": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Integration metadata for a test, mirroring the Vanta web app." + } + }, + "com.vanta.auditor_api#VantaTestSnapshotEvidenceDetailIntegrationsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#VantaTestSnapshotIntegration" + }, + "traits": { + "smithy.api#documentation": "Integrations whose data feeds the test." + } + }, + "com.vanta.auditor_api#VantaTestSnapshotSlaRemediation": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "settings": { + "target": "com.vanta.auditor_api#VantaTestSnapshotSlaRemediationSettings", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestSnapshotSlaRemediationSettings": { + "type": "structure", + "members": { + "numericValue": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#required": {} + } + }, + "unit": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestSnapshotRawTestDataRow": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Identifier of the underlying resource the row was captured from. Null for\nunstructured snapshots, which do not partition by resource.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "resourceType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Specific resource kind for the row (e.g. `AwsIamUser`). Null for\nunstructured snapshots.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "rawJson": { + "target": "smithy.api#Document", + "traits": { + "smithy.api#documentation": "Raw JSON payload as emitted by the test runner. Shape varies by\n`resourceType` for structured snapshots and matches the full test-run\nblob for unstructured snapshots.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "One row of raw test data attached to a snapshot.\n\nFor structured snapshots, every row carries the resource refs and the raw\nJSON for that resource. For unstructured snapshots, a single row is returned\nwith `resourceId` and `resourceType` set to `null` and `rawJson` containing\nthe entire test-run JSON blob." + } + }, + "com.vanta.auditor_api#VantaTestSnapshotEvidenceDetailRawTestDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#VantaTestSnapshotRawTestDataRow" + }, + "traits": { + "smithy.api#documentation": "Raw test data captured at snapshot time." + } + }, + "com.vanta.auditor_api#VantaTestSnapshotOutOfScopeResources": { + "type": "structure", + "members": { + "testLevel": { + "target": "com.vanta.auditor_api#VantaTestSnapshotOutOfScopeResourcesTestLevelList", + "traits": { + "smithy.api#required": {} + } + }, + "frameworkLevel": { + "target": "com.vanta.auditor_api#VantaTestSnapshotOutOfScopeResourcesFrameworkLevelList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Resources excluded from the test at snapshot time, grouped by exclusion\nreason. `testLevel` contains resources the customer disabled for the\ntest; `frameworkLevel` contains resources scoped out by the framework's\nsegment configuration." + } + }, + "com.vanta.auditor_api#VantaTestSnapshotExcludedItemGroup": { + "type": "structure", + "members": { + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "entities": { + "target": "com.vanta.auditor_api#VantaTestSnapshotExcludedItemGroupEntitiesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestSnapshotExcludedItem": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestSnapshotExcludedItemGroupEntitiesList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#VantaTestSnapshotExcludedItem" + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestSnapshotOutOfScopeResourcesTestLevelList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#VantaTestSnapshotExcludedItemGroup" + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestSnapshotFrameworkExclusion": { + "type": "structure", + "members": { + "frameworkId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "frameworkName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "groupedByReason": { + "target": "com.vanta.auditor_api#VantaTestSnapshotFrameworkExclusionGroupedByReasonList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestSnapshotFrameworkExclusionGroupedByReasonList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#VantaTestSnapshotExcludedItemGroup" + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestSnapshotOutOfScopeResourcesFrameworkLevelList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#VantaTestSnapshotFrameworkExclusion" + }, + "traits": {} + }, + "com.vanta.auditor_api#VantaTestSnapshotApiRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "resourceType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "resourceTypeDisplayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "requestMethod": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "responseCode": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#required": {} + } + }, + "timestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "dataTooLarge": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A single API request captured during an API introspection test run." + } + }, + "com.vanta.auditor_api#VantaTestSnapshotEvidenceDetailApiRequestsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#VantaTestSnapshotApiRequest" + }, + "traits": { + "smithy.api#documentation": "API requests captured during the test run. Absent when the snapshot\ndata could not be loaded. Empty array when the test does not perform\nAPI introspection." + } + }, + "com.vanta.auditor_api#GetInformationRequestTestSnapshotEvidenceDetail": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#GetInformationRequestTestSnapshotEvidenceDetailRequest" + }, + "output": { + "target": "com.vanta.auditor_api#VantaTestSnapshotEvidenceDetail" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/information-requests/{requestId}/evidence/{evidenceId}/test-snapshot", + "code": 200 + }, + "smithy.api#documentation": "Get test snapshot detail for an evidence row\n\nRetrieves the rich detail for a single VANTA_TEST_SNAPSHOT evidence row\nattached to an information request. The response includes test-level\nmetadata (description, integrations, SLA), the raw test data captured\nat snapshot time, and the resources that were excluded from the test\n(out-of-scope resources).\n\nFor structured snapshots, the `rawTestData` array contains one row per\nresource the test ran against; each row carries `resourceId`,\n`resourceType`, and the raw JSON for that resource.\n\nFor unstructured snapshots, the `rawTestData` array contains a single\nrow with `resourceId` and `resourceType` set to `null` and `rawJson`\ncontaining the entire test-run JSON blob.\n\nThe `outOfScopeResources` field lists resources excluded at the test\nlevel (customer-disabled) and the framework level (segment\nconfiguration). Empty exclusion groups are filtered out.\n\nThe `apiRequests` array contains the HTTP requests captured during API\nintrospection tests. Empty when the test does not perform API\nintrospection.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#FlagInformationRequestEvidenceRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "requestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "auditorEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the auditor flagging the evidence.\nMust match an existing Vanta user who belongs to the audit firm making the API request.", + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Detailed explanation of what issues were found with the evidence.\nThis reason is visible to the customer and guides them on what to fix.\nMust be at least 1 character.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#FlagInformationRequestEvidence": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#FlagInformationRequestEvidenceRequest" + }, + "output": { + "target": "com.vanta.auditor_api#InformationRequest" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/audits/{auditId}/information-requests/{requestId}/flag-evidence", + "code": 200 + }, + "smithy.api#documentation": "Flag evidence for an information request\n\nFlags evidence for an information request when it doesn't meet audit requirements,\nmarking issues that need to be addressed before approval. This action changes the\nrequest's approvalStatus to a flagged state and creates an activity log entry.\n\nFlagging workflow:\n1. Auditor reviews submitted evidence\n2. If issues are found, auditor calls this endpoint with detailed reason\n3. Request status changes to flagged state\n4. Customer is notified and can see the reason in activity logs\n5. Customer addresses issues and updates evidence\n6. When ready, customer changes status back to awaiting review\n7. Auditor reviews again and either flags again or accepts\n\nThe `reason` field should clearly explain what's missing or incorrect so the\ncustomer knows exactly what to fix. This reason is visible to the customer\nand appears in the activity log.\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#AuditIntegrationTag": { + "type": "enum", + "members": { + "ACCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCESS" + } + }, + "COMPUTERS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPUTERS" + } + }, + "CUSTOM_RESOURCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CUSTOM_RESOURCE" + } + }, + "DATA_LOSS_PREVENTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DATA_LOSS_PREVENTION" + } + }, + "DOCUMENTS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DOCUMENTS" + } + }, + "DOCUMENT_UPLOAD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DOCUMENT_UPLOAD" + } + }, + "FRAMEWORK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FRAMEWORK" + } + }, + "GROUPS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GROUPS" + } + }, + "INVENTORY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INVENTORY" + } + }, + "NOTIFICATIONS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOTIFICATIONS" + } + }, + "PEOPLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PEOPLE" + } + }, + "POLICIES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POLICIES" + } + }, + "SECURITY_AWARENESS_TRAINING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_AWARENESS_TRAINING" + } + }, + "SECURITY_SCANNER_ALERTS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_SCANNER_ALERTS" + } + }, + "SSO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SSO" + } + }, + "TASK_CREATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TASK_CREATION" + } + }, + "TASK_TRACKING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TASK_TRACKING" + } + }, + "TRUST_CENTER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TRUST_CENTER" + } + }, + "VENDOR_DISCOVERY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VENDOR_DISCOVERY" + } + }, + "VENDOR_PROCUREMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VENDOR_PROCUREMENT" + } + }, + "VULNERABILITIES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VULNERABILITIES" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListIntegrationsRequestTagsMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditIntegrationTag" + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditIntegrationCategory": { + "type": "enum", + "members": { + "ATS_MERGE_ACCOUNT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ATS_MERGE_ACCOUNT" + } + }, + "BACKGROUND_CHECK_SERVICE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BACKGROUND_CHECK_SERVICE" + } + }, + "CLOUD_PROVIDER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CLOUD_PROVIDER" + } + }, + "COMMUNICATION_PLATFORM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMMUNICATION_PLATFORM" + } + }, + "CRM_MERGE_ACCOUNT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRM_MERGE_ACCOUNT" + } + }, + "CRM_PLATFORM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRM_PLATFORM" + } + }, + "DATASTORE_PROVIDER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DATASTORE_PROVIDER" + } + }, + "DATA_LOSS_PREVENTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DATA_LOSS_PREVENTION" + } + }, + "DATA_WAREHOUSE_PROVIDER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DATA_WAREHOUSE_PROVIDER" + } + }, + "DOCUMENT_MANAGEMENT_TOOL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DOCUMENT_MANAGEMENT_TOOL" + } + }, + "ENDPOINT_SECURITY_TOOL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ENDPOINT_SECURITY_TOOL" + } + }, + "HR_PROVIDER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HR_PROVIDER" + } + }, + "IDENTITY_PROVIDER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IDENTITY_PROVIDER" + } + }, + "INCIDENT_MANAGEMENT_TOOL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCIDENT_MANAGEMENT_TOOL" + } + }, + "MOBILE_DEVICE_MANAGEMENT_TOOL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MOBILE_DEVICE_MANAGEMENT_TOOL" + } + }, + "MONITORING_SERVICE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MONITORING_SERVICE" + } + }, + "OTHER_INTEGRATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OTHER_INTEGRATION" + } + }, + "SECURITY_AWARENESS_TRAINING_PROVIDER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_AWARENESS_TRAINING_PROVIDER" + } + }, + "SECURITY_SCANNER_ALERTS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_SCANNER_ALERTS" + } + }, + "TASK_TRACKER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TASK_TRACKER" + } + }, + "VERSION_CONTROL_SYSTEM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VERSION_CONTROL_SYSTEM" + } + }, + "VULNERABILITY_SCANNER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VULNERABILITY_SCANNER" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListIntegrationsRequestCategoriesMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditIntegrationCategory" + }, + "traits": {} + }, + "com.vanta.auditor_api#ListIntegrationsRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search", + "smithy.api#documentation": "Search term for filtering by integration name" + } + }, + "tagsMatchesAny": { + "target": "com.vanta.auditor_api#ListIntegrationsRequestTagsMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "tagsMatchesAny", + "smithy.api#documentation": "Filter integrations by tag values" + } + }, + "categoriesMatchesAny": { + "target": "com.vanta.auditor_api#ListIntegrationsRequestCategoriesMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "categoriesMatchesAny", + "smithy.api#documentation": "Filter integrations by category values" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditIntegration": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditIntegrationResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditIntegration": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Integration identifier.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the integration.", + "smithy.api#required": {} + } + }, + "tags": { + "target": "com.vanta.auditor_api#AuditIntegrationTagsList", + "traits": { + "smithy.api#documentation": "Integration tag display names describing what data this integration provides." + } + }, + "categories": { + "target": "com.vanta.auditor_api#AuditIntegrationCategoriesList", + "traits": { + "smithy.api#documentation": "Category display names describing what the integration is used for." + } + } + }, + "traits": { + "smithy.api#documentation": "Integration row returned by the auditor integrations API.\n\n`id` and `name` are always present. Other fields are optional to support\ncontrolled audits where only approved columns are returned." + } + }, + "com.vanta.auditor_api#AuditIntegrationTagsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Integration tag display names describing what data this integration provides." + } + }, + "com.vanta.auditor_api#AuditIntegrationCategoriesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Category display names describing what the integration is used for." + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditIntegrationResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditIntegration" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseAuditIntegrationResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditIntegrationResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListIntegrations": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListIntegrationsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditIntegration" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/integrations", + "code": 200 + }, + "smithy.api#documentation": "List integrations for an audit\n\nRetrieves integration population data for an audit.\n\nThis endpoint provides access to integration records visible to auditors\nduring an audit engagement. Integrations represent connected services\n(e.g., GitHub, AWS, Slack) that provide data for the audit.\n\nSupports filtering by:\n- `search`: Searches integration names (case-insensitive)\n- `tagsMatchesAny`: Filters by integration tag (ACCESS, COMPUTERS, etc.)\n- `categoriesMatchesAny`: Filters by category (CLOUD_PROVIDER, HR_PROVIDER, etc.)\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nResults are sorted by integration display name (ascending). This sort order\nis fixed and cannot be customized via query parameters.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#ListAuditIssuesRequestSnapshotIdMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.auditor_api#IssueSnapshotItemOrderBy": { + "type": "enum", + "members": { + "CREATEDAT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "createdAt" + } + }, + "LASTMODIFIEDAT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "lastModifiedAt" + } + }, + "DETECTEDAT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "detectedAt" + } + } + }, + "traits": { + "smithy.api#documentation": "Allowed values for the `orderBy` query parameter on issue snapshot item endpoints." + } + }, + "com.vanta.auditor_api#OrderDirection": { + "type": "enum", + "members": { + "ASC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "asc" + } + }, + "DESC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "desc" + } + } + }, + "traits": { + "smithy.api#documentation": "`\"asc\"` for ascending, `\"desc\"` for descending." + } + }, + "com.vanta.auditor_api#ListAuditIssuesRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search", + "smithy.api#documentation": "Search term for filtering by issue title and description" + } + }, + "snapshotIdMatchesAny": { + "target": "com.vanta.auditor_api#ListAuditIssuesRequestSnapshotIdMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "snapshotIdMatchesAny", + "smithy.api#documentation": "Filter issues to specific snapshots by snapshot ID" + } + }, + "createdAfterDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "createdAfterDate", + "smithy.api#documentation": "Filter to issues created on or after this date (ISO 8601)" + } + }, + "createdBeforeDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "createdBeforeDate", + "smithy.api#documentation": "Filter to issues created on or before this date (ISO 8601)" + } + }, + "detectedAfterDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "detectedAfterDate", + "smithy.api#documentation": "Filter to issues detected on or after this date (ISO 8601)" + } + }, + "detectedBeforeDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "detectedBeforeDate", + "smithy.api#documentation": "Filter to issues detected on or before this date (ISO 8601)" + } + }, + "orderBy": { + "target": "com.vanta.auditor_api#IssueSnapshotItemOrderBy", + "traits": { + "smithy.api#httpQuery": "orderBy", + "smithy.api#documentation": "Field to sort results by. Allowed: \"createdAt\", \"lastModifiedAt\", \"detectedAt\". Default: \"createdAt\"" + } + }, + "orderDirection": { + "target": "com.vanta.auditor_api#OrderDirection", + "traits": { + "smithy.api#httpQuery": "orderDirection", + "smithy.api#documentation": "Sort direction: \"asc\" or \"desc\". Default: \"desc\"" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseIssueSnapshotItem": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseIssueSnapshotItemResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#IssueSnapshotItem": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the snapshot of an issue.\n\nThis is distinct from the issueId, which identifies the underlying issue across snapshots.\nThe snapshot item ID is unique to this specific snapshot of the issue.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The issue title" + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The issue description" + } + }, + "readableIssueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The human-readable identifier for the issue.\n\nThis field is unique per-domain, and can be used to correlate\nthis issue snapshot item to the underlying issue across different snapshots.", + "smithy.api#required": {} + } + }, + "issueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The globally unique identifier for the underlying issue across snapshots.\n\nThis field can be used to correlate this snapshot item to the underlying issue across different snapshots.", + "smithy.api#required": {} + } + }, + "snapshotId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the snapshot this issue item belongs to.", + "smithy.api#required": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The due date for the issue.", + "com.distilled.openapi#nullable": {} + } + }, + "status": { + "target": "com.vanta.auditor_api#IssueStatusTypeForSnapshot", + "traits": { + "smithy.api#documentation": "The status of the issue." + } + }, + "approvalProgress": { + "target": "com.vanta.auditor_api#IssueSnapshotItemApprovalProgress", + "traits": { + "smithy.api#documentation": "The issue's approval progress at the time the snapshot was captured,\nor null if no approval was in progress or issue approvals are not enabled.", + "com.distilled.openapi#nullable": {} + } + }, + "lastModifiedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date and time when the issue was last modified." + } + }, + "createdAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date and time when the issue was created." + } + }, + "detectedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date and time when the issue was detected." + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#IssueStatusTypeForSnapshot": { + "type": "enum", + "members": { + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "NOT_STARTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_STARTED" + } + }, + "PENDING_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PENDING_REVIEW" + } + }, + "CLOSED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CLOSED" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#IssueSnapshotItemApprovalProgress": { + "type": "structure", + "members": { + "approvedCount": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of approvers who have approved the issue.", + "smithy.api#required": {} + } + }, + "totalApprovers": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The total number of approvers in the issue's approval chain.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Approval progress for an issue at the time the snapshot was captured." + } + }, + "com.vanta.auditor_api#PaginatedResponseIssueSnapshotItemResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#IssueSnapshotItem" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseIssueSnapshotItemResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseIssueSnapshotItemResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAuditIssues": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListAuditIssuesRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseIssueSnapshotItem" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/issues/items", + "code": 200 + }, + "smithy.api#documentation": "List snapshotted issues for an audit\n\nRetrieves a list of all issues that have been shared with an audit.\n\nThe issues returned are immutable, point-in-time snapshots; there may be duplicates of issues that have been snapshotted at different times.\nThe GET /audits/{auditId}/issues/snapshots endpoint can be used to retrieve metadata about the snapshots that issues belong to.\nIssues represent compliance findings from a variety of sources that need to be tracked and remediated.\n\nSupports filtering by:\n- `search`: full text search across issue title and description\n- `snapshotId`: filtering to a specific snapshot or snapshots, which represent point-in-time captures of issues. Use the GET /audits/{auditId}/issues/snapshots endpoint to retrieve snapshot IDs and metadata.\n- `createdAfterDate` / `createdBeforeDate`: filter to issues created within a date range (inclusive)\n- `detectedAfterDate` / `detectedBeforeDate`: filter to issues detected within a date range (inclusive)\n\nResults are sorted by issue creation date in descending order (newest first) by default.\nUse `orderBy` and `orderDirection` to customize sorting.\nSort parameters must remain consistent across paginated requests.\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#ListAuditSnapshotsRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search", + "smithy.api#documentation": "Search term for filtering by snapshot title and description" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseIssueSnapshotMetadata": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseIssueSnapshotMetadataResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#IssueSnapshotMetadata": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the issue snapshot.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title of the snapshot" + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the snapshot" + } + }, + "createdAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date and time when the snapshot was created." + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseIssueSnapshotMetadataResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#IssueSnapshotMetadata" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseIssueSnapshotMetadataResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseIssueSnapshotMetadataResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAuditSnapshots": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListAuditSnapshotsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseIssueSnapshotMetadata" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/issues/snapshots", + "code": 200 + }, + "smithy.api#documentation": "List snapshotted issues for an audit\n\nRetrieves a list of snapshots that have been shared with an audit.\n\nThe snapshots returned contain metadata about point-in-time captures of issues for an audit.\nThis data can be used to filter down the list of issues to specific snapshots when querying the GET /audits/{auditId}/issues/items endpoint.\n\nSupports filtering by:\n- `search`: full text search across snapshot title and description\n\nResults are sorted by snapshot creation date in descending order (newest first).\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#AuditVendorStatus": { + "type": "enum", + "members": { + "ACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACTIVE" + } + }, + "ARCHIVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ARCHIVED" + } + }, + "IN_PROCUREMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROCUREMENT" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListVendorsRequestVendorStatusesMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditVendorStatus" + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditVendorRiskLevel": { + "type": "enum", + "members": { + "CRITICAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRITICAL" + } + }, + "HIGH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HIGH" + } + }, + "MEDIUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MEDIUM" + } + }, + "LOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LOW" + } + }, + "UNSCORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UNSCORED" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListVendorsRequestInherentRiskMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditVendorRiskLevel" + }, + "traits": {} + }, + "com.vanta.auditor_api#VendorOrderBy": { + "type": "enum", + "members": { + "NAME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "name" + } + }, + "INHERENTRISK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "inherentRisk" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListVendorsRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search", + "smithy.api#documentation": "Search term for filtering by vendor name" + } + }, + "vendorStatusesMatchesAny": { + "target": "com.vanta.auditor_api#ListVendorsRequestVendorStatusesMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "vendorStatusesMatchesAny", + "smithy.api#documentation": "Filter vendors by status values" + } + }, + "inherentRiskMatchesAny": { + "target": "com.vanta.auditor_api#ListVendorsRequestInherentRiskMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "inherentRiskMatchesAny", + "smithy.api#documentation": "Filter vendors by inherent risk level values" + } + }, + "orderBy": { + "target": "com.vanta.auditor_api#VendorOrderBy", + "traits": { + "smithy.api#httpQuery": "orderBy", + "smithy.api#documentation": "Field to sort results by. Allowed: \"name\", \"inherentRisk\". Default: \"name\"" + } + }, + "orderDirection": { + "target": "com.vanta.auditor_api#OrderDirection", + "traits": { + "smithy.api#httpQuery": "orderDirection", + "smithy.api#documentation": "Sort direction: \"asc\" or \"desc\". Default: \"asc\"" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditVendor": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditVendorResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditVendor": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vendor record ID.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vendor name.", + "smithy.api#required": {} + } + }, + "inherentRisk": { + "target": "com.vanta.auditor_api#AuditVendorRiskLevel", + "traits": { + "smithy.api#documentation": "Inherent risk level of the vendor." + } + }, + "status": { + "target": "com.vanta.auditor_api#AuditVendorStatus", + "traits": { + "smithy.api#documentation": "Vendor status." + } + }, + "findings": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Number of findings associated with the vendor." + } + }, + "lastReviewedCompleted": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the last security review was completed, or null if none.", + "com.distilled.openapi#nullable": {} + } + }, + "nextSecurityReviewDueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the next security review is due, or null if not scheduled.", + "com.distilled.openapi#nullable": {} + } + }, + "vendorCategory": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vendor category (e.g. cloud provider, SaaS).", + "com.distilled.openapi#nullable": {} + } + }, + "residualRisk": { + "target": "com.vanta.auditor_api#AuditVendorRiskLevel", + "traits": { + "smithy.api#documentation": "Residual risk level of the vendor.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "dataAgreements": { + "target": "com.vanta.auditor_api#AuditVendorDataAgreements", + "traits": { + "smithy.api#documentation": "BAA/DPA document completion counts, or null if no such documents are required.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Managed vendor row returned by the auditor managed-vendors API.\n\nOnly `id` and `name` are required. All other fields are optional to support\ncontrolled audits where only approved columns are returned and\ncustomizable field visibility." + } + }, + "com.vanta.auditor_api#AuditVendorDataAgreements": { + "type": "structure", + "members": { + "total": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#required": {} + } + }, + "complete": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "BAA/DPA document completion counts, or null if no such documents are required.\nFull Audit View only - omitted in Controlled Audit View." + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditVendorResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditVendor" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseAuditVendorResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditVendorResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListVendors": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListVendorsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditVendor" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/managed-vendors", + "code": 200 + }, + "smithy.api#documentation": "List vendors for an audit\n\nRetrieves vendor population data for an audit.\n\nThis endpoint provides access to vendor records visible to auditors\nduring an audit engagement.\n\nSupports filtering by:\n- `search`: Searches vendor names (case-insensitive)\n- `vendorStatusesMatchesAny`: Filters by vendor status (ACTIVE, ARCHIVED, IN_PROCUREMENT)\n- `inherentRiskMatchesAny`: Filters by inherent risk level\n\nResults are sorted by name (ascending) by default.\nUse `orderBy` and `orderDirection` to customize sorting.\nSort parameters must remain consistent across paginated requests.\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#GetOrganizationInformationRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#AuditOrganizationInformation": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Business info document identifier.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the organization.", + "smithy.api#required": {} + } + }, + "legalName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Legal name of the organization.", + "com.distilled.openapi#nullable": {} + } + }, + "incorporation": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Incorporation status. Returns \"Incorporated in the United States\"\nwhen the organization is a US company, or null otherwise.", + "com.distilled.openapi#nullable": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Organization URL.", + "com.distilled.openapi#nullable": {} + } + }, + "mailingAddress": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Mailing address of the organization.", + "com.distilled.openapi#nullable": {} + } + }, + "telephone": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Telephone number of the organization.", + "com.distilled.openapi#nullable": {} + } + }, + "companyLogo": { + "target": "com.vanta.auditor_api#AuditOrganizationCompanyLogo", + "traits": { + "smithy.api#documentation": "Company logo reference (download URL), or null if no logo is uploaded.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Organization information record returned by the auditor organization API.\n\n`id` and `displayName` are always present (primary fields). Other fields\nare optional to support controlled audits where only approved columns are\nreturned." + } + }, + "com.vanta.auditor_api#AuditOrganizationCompanyLogo": { + "type": "structure", + "members": { + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "URL to download the company logo.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Company logo reference for an organization." + } + }, + "com.vanta.auditor_api#GetOrganizationInformation": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#GetOrganizationInformationRequest" + }, + "output": { + "target": "com.vanta.auditor_api#AuditOrganizationInformation" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/organization/information", + "code": 200 + }, + "smithy.api#documentation": "Get organization information for an audit\n\nRetrieves organization information for an audit.\n\nThis endpoint returns a single record containing the organization's\nbusiness information visible to auditors during an audit engagement.\n\nSorting and pagination are not applicable.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#GetOrganizationNotificationsRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#AuditOrganizationNotifications": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Domain identifier of the audited organization.", + "smithy.api#required": {} + } + }, + "preferredTimeZone": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "IANA timezone identifier that determines when scheduled reminder\nnotifications are sent. `null` means the organization has no configured\npreference (\"Anytime\" in the UI).", + "com.distilled.openapi#nullable": {} + } + }, + "employeeDigestFrequency": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Frequency at which personnel reminder digests are sent (e.g. `DAILY`,\n`WEEKLY`, or `NEVER`). `null` when no notification settings have been\nconfigured for the organization.", + "com.distilled.openapi#nullable": {} + } + }, + "subscribedChannelTypes": { + "target": "com.vanta.auditor_api#AuditOrganizationNotificationsSubscribedChannelTypesList", + "traits": { + "smithy.api#documentation": "Channels on which the personnel reminder digest is delivered (e.g.\n`[\"EMAIL\"]` or `[\"EMAIL\", \"SLACK\"]`)." + } + }, + "externalNotifications": { + "target": "com.vanta.auditor_api#AuditOrganizationNotificationsExternalNotificationsList", + "traits": { + "smithy.api#documentation": "External notification subscriptions — one row per mailing-list address\nplus category pairing. Covers Compliance, Vendors, Access Reviews, and\nTrust Center categories." + } + } + }, + "traits": { + "smithy.api#documentation": "Organization notifications record returned by the auditor API.\n\nAd-hoc single-row payload per domain mirroring the shape of the\nOrganization → Notifications page. Only `id` is guaranteed; every other\nfield is optional because controlled audit views can strip any column\nfrom the response." + } + }, + "com.vanta.auditor_api#AuditOrganizationNotificationsSubscribedChannelTypesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Channels on which the personnel reminder digest is delivered (e.g.\n`[\"EMAIL\"]` or `[\"EMAIL\", \"SLACK\"]`)." + } + }, + "com.vanta.auditor_api#AuditOrganizationNotificationSubscription": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Subscription record identifier.", + "smithy.api#required": {} + } + }, + "address": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address that receives notifications for this category.", + "smithy.api#required": {} + } + }, + "cadence": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Cadence of summary notifications for this subscription, or null for\nnon-summary (immediate / reminder) subscriptions.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "unsubSettingsKey": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Notification category the subscription belongs to (e.g.\n`SUMMARY_EMPLOYEE`, `NEW_VENDORS_DISCOVERED_EMAIL`,\n`TRUST_REPORT_ACCESS_REQUEST_EMAIL`).", + "smithy.api#required": {} + } + }, + "toggleIsSubscribed": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the address is currently subscribed to receive this category's\nnotifications.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A single external-notification subscription row returned by the auditor\norganization notifications API. Represents one mailing-list address +\nnotification-category pairing." + } + }, + "com.vanta.auditor_api#AuditOrganizationNotificationsExternalNotificationsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditOrganizationNotificationSubscription" + }, + "traits": { + "smithy.api#documentation": "External notification subscriptions — one row per mailing-list address\nplus category pairing. Covers Compliance, Vendors, Access Reviews, and\nTrust Center categories." + } + }, + "com.vanta.auditor_api#GetOrganizationNotifications": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#GetOrganizationNotificationsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#AuditOrganizationNotifications" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/organization/notifications", + "code": 200 + }, + "smithy.api#documentation": "Get organization notification settings for an audit\n\nRetrieves organization notification settings for an audit.\n\nThis endpoint returns a single record containing the auditee\norganization's notification configuration — schedule, personnel\nreminder settings, and external notification subscriptions\n(Compliance, Vendors, Access Reviews, Trust Center).\n\nThe response is a single aggregate object per domain. Sorting and\npagination are not applicable. Under a controlled audit view\n(TRIMMED_DOWN), only CAV-approved fields are included.\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#ListAccountAccessServicesRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseAccountAccessService": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseAccountAccessServiceResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AccountAccessService": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the service.", + "smithy.api#required": {} + } + }, + "credentialDisplayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the service shown to users.", + "smithy.api#required": {} + } + }, + "service": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The service name or integration ID.", + "smithy.api#required": {} + } + }, + "subAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Sub-account identifier for multi-account integrations, or null if not applicable.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "An account access service (identity provider, access credential, or external application)\nconnected to the organization.\n\nThese represent credentials for integrations like Okta, Azure AD,\nGoogle Workspace, etc. that provide identity and access management\ndata for personnel, as well as external applications that provide\nreceived user accounts." + } + }, + "com.vanta.auditor_api#PaginatedResponseAccountAccessServiceResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AccountAccessService" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseAccountAccessServiceResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseAccountAccessServiceResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAccountAccessServices": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListAccountAccessServicesRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseAccountAccessService" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/personnel/account-access/services", + "code": 200 + }, + "smithy.api#documentation": "List account access services for an audit\n\nRetrieves connected account access services for an audit.\n\nReturns the list of identity providers and access integrations (such as\nOkta, Azure AD, Google Workspace, AWS IAM) that are connected to the\norganization and provide account access data for personnel.\n\nThese integrations are used to verify user access and identity management\nduring an audit engagement.\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nResults are returned in connection order. Sort order is not guaranteed\nand cannot be customized via query parameters.\n\nReturns 422 when the audit does not have exactly one program segment\n(multi-framework audits are not supported on this endpoint).\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#AccountAccessStatus": { + "type": "enum", + "members": { + "ACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACTIVE" + } + }, + "DEACTIVATED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DEACTIVATED" + } + }, + "UNKNOWN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UNKNOWN" + } + } + }, + "traits": { + "smithy.api#documentation": "Account status values for account access records.\nUnified status enum that covers all service types." + } + }, + "com.vanta.auditor_api#ListPersonnelAccountAccessRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "serviceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The service ID from the /services endpoint" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search", + "smithy.api#documentation": "Search term for filtering by account name or email" + } + }, + "status": { + "target": "com.vanta.auditor_api#AccountAccessStatus", + "traits": { + "smithy.api#httpQuery": "status", + "smithy.api#documentation": "Filter by account status" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseAccountAccess": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseAccountAccessResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AccountAccess": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the account.", + "smithy.api#required": {} + } + }, + "accountName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Account name or email address (primary identifier).", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the account owner, or null when the column is visible but unknown.", + "com.distilled.openapi#nullable": {} + } + }, + "role": { + "target": "com.vanta.auditor_api#AccountAccessRoleList", + "traits": { + "smithy.api#documentation": "Account roles; empty array when the column is visible but has no roles." + } + }, + "status": { + "target": "com.vanta.auditor_api#AccountAccessStatus", + "traits": { + "smithy.api#documentation": "Account status when present; omitted when the column is not in the response." + } + }, + "mfa": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Multi-factor authentication (MFA) status when present.\n`true` = MFA enabled, `false` = MFA not enabled, `null` = visible but unknown.", + "com.distilled.openapi#nullable": {} + } + }, + "createdDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Account creation date when present, or null when visible but absent.", + "com.distilled.openapi#nullable": {} + } + }, + "deactivatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Account deactivation date when present, or null when active.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Account access record from personnel population.\n\nThis unified interface represents account access data from all service types:\n- IDP services (Okta, Azure AD, Google Workspace, etc.)\n- First-party account services (AWS, Azure, GCP, Oracle Cloud, etc.)\n- Role grants services (GCP, Azure role grants)\n- Received/third-party applications\n\nOnly `id` and `accountName` are always present. Other fields are optional so\ndisallowed columns can be omitted (for example under controlled audit view).\nWhen an optional field is present, `null` means the column is visible but empty\n(only fields that are nullable in population data use `null`)." + } + }, + "com.vanta.auditor_api#AccountAccessRoleList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Account roles; empty array when the column is visible but has no roles." + } + }, + "com.vanta.auditor_api#PaginatedResponseAccountAccessResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AccountAccess" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseAccountAccessResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseAccountAccessResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListPersonnelAccountAccess": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListPersonnelAccountAccessRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseAccountAccess" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/personnel/account-access/{serviceId}", + "code": 200 + }, + "smithy.api#documentation": "List account access records for an audit\n\nRetrieves account access population data for an audit.\n\nThis endpoint provides access to account access records visible to auditors\nduring an audit engagement. Account access data comes from various sources:\n\n- **IDP Services** (Identity Providers): Okta, Azure AD, Google Workspace, OneLogin, PingOne\n\n - Returns user accounts from identity providers\n - Supports filtering by search and status\n\n- **Role Grants Services**: GCP, Azure (when role grants are enabled)\n\n - Returns accounts with role-based access grants\n - Supports filtering by search and status\n\n- **First-Party Account Services**: AWS, Oracle Cloud, Azure (when not using role grants), etc.\n\n - Returns cloud provider account access records\n - Supports filtering by search and status\n\n- **Received Account Services**: External applications (Jira, GitHub, Slack, etc.)\n\n - Returns user accounts from third-party integrations\n - Supports filtering by search and status\n\n\nSupports filtering by:\n- `search`: Searches account names/emails (case-insensitive)\n- `status`: Filters by account status\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nThe default sort order depends on the service type:\n- Identity provider services (e.g. Okta, Azure AD): sorted by email, ascending\n- Cloud provider services (e.g. AWS, GCP): sorted by account name, ascending\n- Role grant services: sorted by account name, ascending\n- Third-party application services (e.g. GitHub, Jira): sorted by account name, ascending\n\nSort order cannot be customized via query parameters.\n\nReturns 422 when the audit does not have exactly one program segment\n(multi-framework audits are not supported on this endpoint).\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#ListPersonnelGroupsRequestSourcesMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.auditor_api#GroupOrderBy": { + "type": "enum", + "members": { + "NAME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "name" + } + }, + "MEMBERS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "members" + } + }, + "SOURCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "source" + } + }, + "TASKSLASTUPDATED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "tasksLastUpdated" + } + }, + "POINTOFCONTACT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pointOfContact" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListPersonnelGroupsRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search", + "smithy.api#documentation": "Search term for filtering by group name" + } + }, + "sourcesMatchesAny": { + "target": "com.vanta.auditor_api#ListPersonnelGroupsRequestSourcesMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "sourcesMatchesAny", + "smithy.api#documentation": "Filter groups by IDP source service names" + } + }, + "orderBy": { + "target": "com.vanta.auditor_api#GroupOrderBy", + "traits": { + "smithy.api#httpQuery": "orderBy", + "smithy.api#documentation": "Field to sort results by. Allowed: \"name\", \"members\", \"source\", \"tasksLastUpdated\", \"pointOfContact\". Default: \"name\"" + } + }, + "orderDirection": { + "target": "com.vanta.auditor_api#OrderDirection", + "traits": { + "smithy.api#httpQuery": "orderDirection", + "smithy.api#documentation": "Sort direction: \"asc\" or \"desc\". Default: \"asc\"" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponsePersonnelGroup": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponsePersonnelGroupResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#PersonnelGroup": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the group.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the group.", + "smithy.api#required": {} + } + }, + "members": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Number of people in this group within the audit scope." + } + }, + "source": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The source of this group.\nFor IDP-synced groups, this is the provider name (e.g., \"Okta\", \"Azure AD\").\nFor manually created groups, this is \"Vanta\"." + } + }, + "tasks": { + "target": "com.vanta.auditor_api#PersonnelGroupTasksList", + "traits": { + "smithy.api#documentation": "Security tasks enabled for this group, or empty array if not available." + } + }, + "tasksLastUpdated": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the group's task configuration was last updated, or null if never updated.\nISO 8601 format.", + "com.distilled.openapi#nullable": {} + } + }, + "pointOfContact": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the group's designated point of contact, or null if not set.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A group record from the personnel population.\n\n`id` and `name` are required. All other fields are optional to support customizable field visibility.\n\nOmitted keys mean the column is not in the response; `null` means the column is present but empty." + } + }, + "com.vanta.auditor_api#PersonnelGroupTask": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Task name", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A task assigned to a personnel group." + } + }, + "com.vanta.auditor_api#PersonnelGroupTasksList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#PersonnelGroupTask" + }, + "traits": { + "smithy.api#documentation": "Security tasks enabled for this group, or empty array if not available." + } + }, + "com.vanta.auditor_api#PaginatedResponsePersonnelGroupResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#PersonnelGroup" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponsePersonnelGroupResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponsePersonnelGroupResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListPersonnelGroups": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListPersonnelGroupsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponsePersonnelGroup" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/personnel/groups", + "code": 200 + }, + "smithy.api#documentation": "List groups for an audit\n\nRetrieves groups population data for an audit.\n\nThis endpoint provides access to the group records visible to auditors\nduring an audit engagement. Groups represent organizational units that\ncontain people, either imported from an identity provider (IDP) or\ncreated manually in Vanta.\n\nOnly Controlled Audit View (CAV) audits are supported. Full Audit\nView audits are rejected with 403.\n\nSupports filtering by:\n- `search`: Searches group names (case-insensitive)\n- `sourcesMatchesAny`: Filters by IDP source service names\n\nResults are sorted by name (ascending) by default.\nUse `orderBy` and `orderDirection` to customize sorting.\nSort parameters must remain consistent across paginated requests.\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#PeopleEmploymentStatus": { + "type": "enum", + "members": { + "CURRENTLY_EMPLOYED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CURRENTLY_EMPLOYED" + } + }, + "INACTIVE_EMPLOYEE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INACTIVE_EMPLOYEE" + } + }, + "NOT_PEOPLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_PEOPLE" + } + }, + "ON_LEAVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ON_LEAVE" + } + }, + "PREVIOUSLY_EMPLOYED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PREVIOUSLY_EMPLOYED" + } + }, + "UPCOMING_EMPLOYEE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UPCOMING_EMPLOYEE" + } + } + }, + "traits": { + "smithy.api#documentation": "Employment status filter for people queries." + } + }, + "com.vanta.auditor_api#ListPersonnelPeopleRequestGroupsMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.auditor_api#PeopleOrderBy": { + "type": "enum", + "members": { + "NAME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "name" + } + }, + "EMPLOYMENTSTATUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "employmentStatus" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListPersonnelPeopleRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search", + "smithy.api#documentation": "Search term for filtering by name or email" + } + }, + "status": { + "target": "com.vanta.auditor_api#PeopleEmploymentStatus", + "traits": { + "smithy.api#httpQuery": "status", + "smithy.api#documentation": "Employment status filter" + } + }, + "groupsMatchesAny": { + "target": "com.vanta.auditor_api#ListPersonnelPeopleRequestGroupsMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "groupsMatchesAny", + "smithy.api#documentation": "Filter people by group IDs" + } + }, + "orderBy": { + "target": "com.vanta.auditor_api#PeopleOrderBy", + "traits": { + "smithy.api#httpQuery": "orderBy", + "smithy.api#documentation": "Field to sort results by. Allowed: \"name\", \"employmentStatus\". Default: \"name\"" + } + }, + "orderDirection": { + "target": "com.vanta.auditor_api#OrderDirection", + "traits": { + "smithy.api#httpQuery": "orderDirection", + "smithy.api#documentation": "Sort direction: \"asc\" or \"desc\". Default: \"asc\"" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponsePersonnelPerson": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponsePersonnelPersonResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#PersonnelPerson": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "User ID - always present.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the person - always present.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the person - always present.", + "smithy.api#required": {} + } + }, + "jobTitle": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Job title from HR system, or null if not available.", + "com.distilled.openapi#nullable": {} + } + }, + "employmentStatus": { + "target": "com.vanta.auditor_api#PeopleEmploymentStatus", + "traits": { + "smithy.api#documentation": "Employment status, or null if not available.", + "com.distilled.openapi#nullable": {} + } + }, + "startDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Start date in ISO 8601 format (YYYY-MM-DD), or null if not available.\nTimezone depends on source: UTC if from HR system,\ncustomer timezone if manually entered.", + "com.distilled.openapi#nullable": {} + } + }, + "endDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "End date in ISO 8601 format (YYYY-MM-DD), or null if currently employed.", + "com.distilled.openapi#nullable": {} + } + }, + "groups": { + "target": "com.vanta.auditor_api#PersonnelPersonGroupsList", + "traits": { + "smithy.api#documentation": "Groups (roles) the person belongs to. Present only when the column is in the response;\nuse an empty array when there are no groups." + } + }, + "source": { + "target": "com.vanta.auditor_api#PeopleSourceInfo", + "traits": { + "smithy.api#documentation": "Source of user data, or null if not available.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "taskStatus": { + "target": "com.vanta.auditor_api#PeopleTaskStatusInfo", + "traits": { + "smithy.api#documentation": "Overall task status information, or null if not available.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "lastReminded": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Last date user was sent an onboarding reminder email in ISO 8601 format, or null if never reminded.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "policies": { + "target": "com.vanta.auditor_api#PeopleSecurityTaskDetails", + "traits": { + "smithy.api#documentation": "Policy acceptance task details, or null if not available.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "trainings": { + "target": "com.vanta.auditor_api#PeopleSecurityTaskDetails", + "traits": { + "smithy.api#documentation": "Security training task details, or null if not available.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "backgroundChecks": { + "target": "com.vanta.auditor_api#PeopleSecurityTaskDetails", + "traits": { + "smithy.api#documentation": "Background check task details, or null if not available.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "deviceMonitoring": { + "target": "com.vanta.auditor_api#PeopleSecurityTaskDetails", + "traits": { + "smithy.api#documentation": "Device monitoring task details, or null if not available.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "customOnboarding": { + "target": "com.vanta.auditor_api#PeopleSecurityTaskDetails", + "traits": { + "smithy.api#documentation": "Custom onboarding task details, or null if not available.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "customOffboarding": { + "target": "com.vanta.auditor_api#PeopleSecurityTaskDetails", + "traits": { + "smithy.api#documentation": "Custom offboarding task details, or null if not available.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Personnel person data.\n\n`id`, `name`, and `email` are required. All other fields are optional to support customizable field visibility.\n\nOmitted keys mean the column is not in the response; `null` means the column is present but empty." + } + }, + "com.vanta.auditor_api#PersonnelPersonGroupsItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#PersonnelPersonGroupsList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#PersonnelPersonGroupsItem" + }, + "traits": { + "smithy.api#documentation": "Groups (roles) the person belongs to. Present only when the column is in the response;\nuse an empty array when there are no groups." + } + }, + "com.vanta.auditor_api#PeopleSourceInfo": { + "type": "structure", + "members": { + "mainSource": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Main source of user data.", + "smithy.api#required": {} + } + }, + "supplementarySource": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Supplementary source, or null if none.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Source information for a person's data.\nFull Audit View only - omitted in Controlled Audit View." + } + }, + "com.vanta.auditor_api#PeopleTaskStatusInfo": { + "type": "structure", + "members": { + "status": { + "target": "com.vanta.auditor_api#PeopleTaskStatus", + "traits": { + "smithy.api#documentation": "Overall task status.", + "smithy.api#required": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Due date for the earliest incomplete task in ISO 8601 format, or null if none.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Completion date when all tasks are complete in ISO 8601 format, or null if incomplete.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "numTasksCompleted": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Count of completed tasks, or null if not available.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "numTasksOverdue": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Count of overdue tasks, or null if not available.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "numTasksDueSoon": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Count of tasks due soon, or null if not available.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Overall task status information for a person.\nFull Audit View only - omitted in Controlled Audit View." + } + }, + "com.vanta.auditor_api#PeopleTaskStatus": { + "type": "enum", + "members": { + "NO_SECURITY_TASKS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NO_SECURITY_TASKS" + } + }, + "OFFBOARDING_COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFFBOARDING_COMPLETE" + } + }, + "OFFBOARDING_DUE_SOON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFFBOARDING_DUE_SOON" + } + }, + "OFFBOARDING_OVERDUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFFBOARDING_OVERDUE" + } + }, + "PAUSED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PAUSED" + } + }, + "SECURITY_TASKS_COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_TASKS_COMPLETE" + } + }, + "SECURITY_TASKS_DUE_SOON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_TASKS_DUE_SOON" + } + }, + "SECURITY_TASKS_OVERDUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_TASKS_OVERDUE" + } + } + }, + "traits": { + "smithy.api#documentation": "Overall user task status." + } + }, + "com.vanta.auditor_api#PeopleSecurityTaskDetails": { + "type": "structure", + "members": { + "status": { + "target": "com.vanta.auditor_api#PeopleSecurityTaskStatus", + "traits": { + "smithy.api#documentation": "Task status for this category.", + "smithy.api#required": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Due date for incomplete task in ISO 8601 format, or null if none.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Completion date for completed task in ISO 8601 format, or null if incomplete.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Security task details for a specific task category.\nFull Audit View only - omitted in Controlled Audit View." + } + }, + "com.vanta.auditor_api#PeopleSecurityTaskStatus": { + "type": "enum", + "members": { + "NO_SECURITY_TASKS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NO_SECURITY_TASKS" + } + }, + "SECURITY_TASKS_COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_TASKS_COMPLETE" + } + }, + "SECURITY_TASKS_DUE_SOON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_TASKS_DUE_SOON" + } + }, + "SECURITY_TASKS_OVERDUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_TASKS_OVERDUE" + } + } + }, + "traits": { + "smithy.api#documentation": "Security task status for individual task categories." + } + }, + "com.vanta.auditor_api#PaginatedResponsePersonnelPersonResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#PersonnelPerson" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponsePersonnelPersonResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponsePersonnelPersonResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListPersonnelPeople": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListPersonnelPeopleRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponsePersonnelPerson" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/personnel/people", + "code": 200 + }, + "smithy.api#documentation": "List people for an audit\n\nRetrieves people population data for an audit.\n\nThis endpoint provides access to the people records visible to auditors\nduring an audit engagement. Only Controlled Audit View (CAV) audits\nare supported. Full Audit View audits are rejected with 403.\n\nSupports filtering by:\n- `search`: Searches names and email addresses\n- `status`: Filters by employment status\n- `groupsMatchesAny`: Filter people by group/role IDs\n\nResults are sorted by name (ascending) by default.\nUse `orderBy` and `orderDirection` to customize sorting.\nSort parameters must remain consistent across paginated requests.\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#ListRiskSnapshotsRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseRiskSnapshot": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseRiskSnapshotResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#RiskSnapshot": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the risk snapshot.", + "smithy.api#required": {} + } + }, + "createdAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date and time when this risk snapshot was created.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A risk assessment snapshot available for an audit.\n\nRisk snapshots capture the state of an organization's risk register at a\npoint in time. Use the snapshot `id` with the `/audits/{auditId}/risks/{snapshotId}`\nendpoint to retrieve the risk scenarios within a snapshot." + } + }, + "com.vanta.auditor_api#PaginatedResponseRiskSnapshotResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#RiskSnapshot" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseRiskSnapshotResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseRiskSnapshotResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListRiskSnapshots": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListRiskSnapshotsRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseRiskSnapshot" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/risks/snapshots", + "code": 200 + }, + "smithy.api#documentation": "List risk snapshots for an audit\n\nReturns a paginated list of risk assessment snapshots available for an audit.\n\nRisk snapshots capture the state of an organization's risk register at a\npoint in time. Each snapshot has an `id` that can be used with the\n`/audits/{auditId}/risks` endpoint to retrieve the individual risk\nscenarios within that snapshot.\n\nResults are sorted by creation date (newest first). This sort order is\nfixed and cannot be customized via query parameters. Only snapshots\nthat are shared with auditors are included.\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#RiskOrderBy": { + "type": "enum", + "members": { + "INHERENTRISK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "inherentRisk" + } + }, + "RISKID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "riskId" + } + }, + "RISKSCENARIO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "riskScenario" + } + }, + "TREATMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "treatment" + } + }, + "RESIDUALRISK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "residualRisk" + } + }, + "REVIEWSTATUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "reviewStatus" + } + }, + "OWNER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "owner" + } + }, + "CATEGORIES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "categories" + } + }, + "CIACATEGORIES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ciaCategories" + } + }, + "IDENTIFIED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "identified" + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAuditRisksRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The audit ID" + } + }, + "snapshotId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The risk assessment snapshot ID" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize", + "smithy.api#documentation": "Maximum number of results per page (1-100, default 10)" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor", + "smithy.api#documentation": "Pagination cursor from previous response" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search", + "smithy.api#documentation": "Search term for filtering by risk scenario description" + } + }, + "orderBy": { + "target": "com.vanta.auditor_api#RiskOrderBy", + "traits": { + "smithy.api#httpQuery": "orderBy", + "smithy.api#documentation": "Field to sort results by. Allowed: \"riskId\", \"riskScenario\", \"inherentRisk\", \"treatment\", \"residualRisk\", \"reviewStatus\", \"owner\", \"categories\", \"ciaCategories\", \"identified\". Default: \"identified\"" + } + }, + "orderDirection": { + "target": "com.vanta.auditor_api#OrderDirection", + "traits": { + "smithy.api#httpQuery": "orderDirection", + "smithy.api#documentation": "Sort direction: \"asc\" or \"desc\". Default: \"desc\"" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditRisk": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditRiskResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#AuditRisk": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the risk scenario version.", + "smithy.api#required": {} + } + }, + "riskId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Custom risk ID (e.g., \"RISK-001\"), or null if not available.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "riskScenario": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the risk scenario, or null if not available.", + "com.distilled.openapi#nullable": {} + } + }, + "likelihood": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Likelihood score of the risk, or null if not scored.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "impact": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Impact score of the risk, or null if not scored.\nFull Audit View only - omitted in Controlled Audit View.", + "com.distilled.openapi#nullable": {} + } + }, + "inherentRisk": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Inherent risk score, or null if not scored. Defaults to the likelihood * impact product; when the organization scores risks by factors, this is the rolled-up factor score rounded to two decimals.", + "com.distilled.openapi#nullable": {} + } + }, + "treatment": { + "target": "com.vanta.auditor_api#AuditRiskTreatment", + "traits": { + "smithy.api#documentation": "Risk treatment strategy, or null if not set.", + "com.distilled.openapi#nullable": {} + } + }, + "treatmentStatus": { + "target": "com.vanta.auditor_api#AuditRiskTreatmentStatus", + "traits": { + "smithy.api#documentation": "Treatment implementation status, or null if not set.", + "com.distilled.openapi#nullable": {} + } + }, + "residualRisk": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Residual risk score after treatment, or null if not calculable.", + "com.distilled.openapi#nullable": {} + } + }, + "reviewStatus": { + "target": "com.vanta.auditor_api#AuditRiskReviewStatus", + "traits": { + "smithy.api#documentation": "Review status of the risk scenario, or null if not set.", + "com.distilled.openapi#nullable": {} + } + }, + "owner": { + "target": "com.vanta.auditor_api#AuditRiskOwner", + "traits": { + "smithy.api#documentation": "Risk owner information, or null if no owner assigned.", + "com.distilled.openapi#nullable": {} + } + }, + "categories": { + "target": "com.vanta.auditor_api#AuditRiskCategoriesList", + "traits": { + "smithy.api#documentation": "Risk category names, or empty array if not categorized." + } + }, + "ciaCategories": { + "target": "com.vanta.auditor_api#AuditRiskCiaCategoriesList", + "traits": { + "smithy.api#documentation": "CIA triad categories, or empty array if not categorized." + } + }, + "linkedControlIds": { + "target": "com.vanta.auditor_api#AuditRiskLinkedControlIdsList", + "traits": { + "smithy.api#documentation": "IDs of controls linked to this risk scenario, or empty array if none.\nFull Audit View only - omitted in Controlled Audit View." + } + }, + "identified": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the risk was identified, or null if not recorded.\nISO 8601 format.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A risk record from the risk population.\n\n`id` and `riskId` are required. All other fields are optional to support customizable field visibility.\n\nOmitted keys mean the column is not in the response; `null` means the column is present but empty." + } + }, + "com.vanta.auditor_api#AuditRiskTreatment": { + "type": "enum", + "members": { + "ACCEPT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCEPT" + } + }, + "AVOID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AVOID" + } + }, + "MITIGATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MITIGATE" + } + }, + "TRANSFER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TRANSFER" + } + } + }, + "traits": { + "smithy.api#documentation": "Risk treatment strategy returned by the auditor API." + } + }, + "com.vanta.auditor_api#AuditRiskTreatmentStatus": { + "type": "enum", + "members": { + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "DONE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DONE" + } + } + }, + "traits": { + "smithy.api#documentation": "Treatment implementation status returned by the auditor API." + } + }, + "com.vanta.auditor_api#AuditRiskReviewStatus": { + "type": "enum", + "members": { + "APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPROVED" + } + }, + "DRAFT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DRAFT" + } + }, + "NOT_REVIEWED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_REVIEWED" + } + }, + "AWAITING_SUBMISSION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AWAITING_SUBMISSION" + } + }, + "PENDING_APPROVAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PENDING_APPROVAL" + } + }, + "REQUESTED_CHANGES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "REQUESTED_CHANGES" + } + } + }, + "traits": { + "smithy.api#documentation": "Risk scenario review status returned by the auditor API." + } + }, + "com.vanta.auditor_api#AuditRiskOwner": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the risk owner.", + "smithy.api#required": {} + } + }, + "imageUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "URL of the owner's profile image, or null if not available.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Owner information for a risk." + } + }, + "com.vanta.auditor_api#AuditRiskCategoriesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Risk category names, or empty array if not categorized." + } + }, + "com.vanta.auditor_api#AuditRiskCia": { + "type": "enum", + "members": { + "AVAILABILITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AVAILABILITY" + } + }, + "CONFIDENTIALITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONFIDENTIALITY" + } + }, + "INTEGRITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INTEGRITY" + } + } + }, + "traits": { + "smithy.api#documentation": "CIA triad category returned by the auditor API." + } + }, + "com.vanta.auditor_api#AuditRiskCiaCategoriesList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditRiskCia" + }, + "traits": { + "smithy.api#documentation": "CIA triad categories, or empty array if not categorized." + } + }, + "com.vanta.auditor_api#AuditRiskLinkedControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs of controls linked to this risk scenario, or empty array if none.\nFull Audit View only - omitted in Controlled Audit View." + } + }, + "com.vanta.auditor_api#PaginatedResponseAuditRiskResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.auditor_api#AuditRisk" + }, + "traits": {} + }, + "com.vanta.auditor_api#PaginatedResponseAuditRiskResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditRiskResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.auditor_api#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.auditor_api#ListAuditRisks": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ListAuditRisksRequest" + }, + "output": { + "target": "com.vanta.auditor_api#PaginatedResponseAuditRisk" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/audits/{auditId}/risks/{snapshotId}", + "code": 200 + }, + "smithy.api#documentation": "List risks for an audit\n\nRetrieves risk population data for an audit.\n\nThis endpoint provides access to the risk records visible to auditors\nduring an audit engagement. Risk data is scoped to a specific risk\nassessment snapshot identified by the `snapshotId` parameter.\n\nOnly Controlled Audit View (CAV) audits are supported. Full Audit\nView audits are rejected with 403.\n\nSupports filtering by:\n- `search`: Searches risk scenario descriptions (case-insensitive)\n\nResults are sorted by identified date (newest first) by default.\nUse `orderBy` and `orderDirection` to customize sorting.\nSort parameters must remain consistent across paginated requests.\n\nUses cursor-based pagination. To paginate:\n1. Make initial request with desired `pageSize`\n2. Check `results.pageInfo.hasNextPage`\n3. Use `results.pageInfo.endCursor` as `pageCursor` for next request\n\nRate limit: 10 requests / minute." + } + }, + "com.vanta.auditor_api#ShareInformationRequestListRequest": { + "type": "structure", + "members": { + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.auditor_api#ShareInformationRequestList": { + "type": "operation", + "input": { + "target": "com.vanta.auditor_api#ShareInformationRequestListRequest" + }, + "output": { + "target": "com.vanta.auditor_api#Audit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/audits/{auditId}/share-information-request-list", + "code": 200 + }, + "smithy.api#documentation": "Share information request list with customer\n\nShares the current information request list for an audit with the customer organization,\nmaking it visible in their portal. This action allows the customer to see all information\nrequests that have been created for their audit. Only IRL audits are supported.\n\nRate limit: 50 requests / minute." + } + }, + "com.vanta.auditor_api#AuditorApi": { + "type": "service", + "version": "1.0.0", + "operations": [ + { + "target": "com.vanta.auditor_api#CreateAuditor" + }, + { + "target": "com.vanta.auditor_api#ListAudits" + }, + { + "target": "com.vanta.auditor_api#Duplicate" + }, + { + "target": "com.vanta.auditor_api#GetAudit" + }, + { + "target": "com.vanta.auditor_api#ListCodeChanges" + }, + { + "target": "com.vanta.auditor_api#ListAuditComments" + }, + { + "target": "com.vanta.auditor_api#ListAuditControls" + }, + { + "target": "com.vanta.auditor_api#CreateCustomControl" + }, + { + "target": "com.vanta.auditor_api#UpsertAssessmentForControl" + }, + { + "target": "com.vanta.auditor_api#ListCommentsForControl" + }, + { + "target": "com.vanta.auditor_api#CreateCommentForControl" + }, + { + "target": "com.vanta.auditor_api#UpdateCommentForControl" + }, + { + "target": "com.vanta.auditor_api#DeleteCommentForControl" + }, + { + "target": "com.vanta.auditor_api#ListInformationRequestsForControl" + }, + { + "target": "com.vanta.auditor_api#ListAuditEvidence" + }, + { + "target": "com.vanta.auditor_api#CreateCustomEvidenceRequest" + }, + { + "target": "com.vanta.auditor_api#GetAuditEvidence" + }, + { + "target": "com.vanta.auditor_api#UpdateAuditEvidence" + }, + { + "target": "com.vanta.auditor_api#CreateCommentForAuditEvidence" + }, + { + "target": "com.vanta.auditor_api#GetAuditEvidenceComment" + }, + { + "target": "com.vanta.auditor_api#ListAuditEvidenceUrls" + }, + { + "target": "com.vanta.auditor_api#GetFrameworkCodes" + }, + { + "target": "com.vanta.auditor_api#ListInformationRequests" + }, + { + "target": "com.vanta.auditor_api#CreateInformationRequest" + }, + { + "target": "com.vanta.auditor_api#GetInformationRequest" + }, + { + "target": "com.vanta.auditor_api#UpdateInformationRequest" + }, + { + "target": "com.vanta.auditor_api#DeleteInformationRequest" + }, + { + "target": "com.vanta.auditor_api#AcceptInformationRequestEvidence" + }, + { + "target": "com.vanta.auditor_api#ListInformationRequestActivity" + }, + { + "target": "com.vanta.auditor_api#ListCommentsForInformationRequest" + }, + { + "target": "com.vanta.auditor_api#CreateCommentForInformationRequest" + }, + { + "target": "com.vanta.auditor_api#GetCommentForInformationRequest" + }, + { + "target": "com.vanta.auditor_api#UpdateCommentForInformationRequest" + }, + { + "target": "com.vanta.auditor_api#DeleteCommentForInformationRequest" + }, + { + "target": "com.vanta.auditor_api#ListInformationRequestEvidence" + }, + { + "target": "com.vanta.auditor_api#GetInformationRequestEvidence" + }, + { + "target": "com.vanta.auditor_api#GetInformationRequestTestSnapshotEvidenceDetail" + }, + { + "target": "com.vanta.auditor_api#FlagInformationRequestEvidence" + }, + { + "target": "com.vanta.auditor_api#ListIntegrations" + }, + { + "target": "com.vanta.auditor_api#ListAuditIssues" + }, + { + "target": "com.vanta.auditor_api#ListAuditSnapshots" + }, + { + "target": "com.vanta.auditor_api#ListVendors" + }, + { + "target": "com.vanta.auditor_api#GetOrganizationInformation" + }, + { + "target": "com.vanta.auditor_api#GetOrganizationNotifications" + }, + { + "target": "com.vanta.auditor_api#ListAccountAccessServices" + }, + { + "target": "com.vanta.auditor_api#ListPersonnelAccountAccess" + }, + { + "target": "com.vanta.auditor_api#ListPersonnelGroups" + }, + { + "target": "com.vanta.auditor_api#ListPersonnelPeople" + }, + { + "target": "com.vanta.auditor_api#ListRiskSnapshots" + }, + { + "target": "com.vanta.auditor_api#ListAuditRisks" + }, + { + "target": "com.vanta.auditor_api#ShareInformationRequestList" + } + ], + "traits": { + "smithy.api#title": "Conduct an audit", + "smithy.api#documentation": "The Auditor API lets audit firms conduct audits from a tool outside of Vanta. Unlock data syncing with Vanta through this API.\n\n**Note for Vanta Gov (FedRAMP) customers:** Select `Vanta Gov (FedRAMP)` from the server dropdown to issue requests against `https://api.vanta-gov.com`. The OAuth token URL shown below defaults to the commercial host — replace it with `https://api.vanta-gov.com/oauth/token`." + } + } + } +} diff --git a/packages/vanta/.generated-specs/build_integrations.json b/packages/vanta/.generated-specs/build_integrations.json new file mode 100644 index 000000000..1c979e97e --- /dev/null +++ b/packages/vanta/.generated-specs/build_integrations.json @@ -0,0 +1,6740 @@ +{ + "smithy": "2.0", + "metadata": { + "suppressions": [ + { + "id": "HttpUriConflict", + "namespace": "*" + }, + { + "id": "HttpMethodSemantics", + "namespace": "*" + }, + { + "id": "UnreferencedShape", + "namespace": "*" + } + ] + }, + "shapes": { + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsItem": { + "type": "structure", + "members": { + "key": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The API query param key associated with this vulnerability occurrence.", + "smithy.api#required": {} + } + }, + "value": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The API query param value associated with this vulnerability occurrence.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsItem" + }, + "traits": { + "smithy.api#documentation": "The API params associated with this vulnerability." + } + }, + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersItem": { + "type": "structure", + "members": { + "key": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The API header key associated with this vulnerability occurrence.", + "smithy.api#required": {} + } + }, + "value": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The API header value associated with this vulnerability occurrence.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersItem" + }, + "traits": { + "smithy.api#documentation": "The API headers associated with this vulnerability." + } + }, + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItem": { + "type": "structure", + "members": { + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Markdown description of this API endpoint vulnerability occurrence.", + "smithy.api#required": {} + } + }, + "fromUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The API endpoint URL associated with this vulnerability occurrence." + } + }, + "queryParams": { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsList", + "traits": { + "smithy.api#documentation": "The API params associated with this vulnerability." + } + }, + "headers": { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersList", + "traits": { + "smithy.api#documentation": "The API headers associated with this vulnerability." + } + }, + "body": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The body of the request passed to the API, with sensitive information redacted." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItem" + }, + "traits": { + "smithy.api#documentation": "A list of occurrences of vulnerable API endpoints." + } + }, + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "occurrences": { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesList", + "traits": { + "smithy.api#documentation": "A list of occurrences of vulnerable API endpoints.", + "smithy.api#required": {} + } + }, + "severity": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The severity of the vulnerability, on a scale of 0 to 10. This will be rounded to the nearest tenth.", + "smithy.api#required": {} + } + }, + "vulnerableComponentUniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A description of the vulnerability.", + "smithy.api#required": {} + } + }, + "remediationInstructions": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Instructions for remediating the vulnerability.", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vulnerable URL.", + "smithy.api#required": {} + } + }, + "httpMethod": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The HTTP method (eg: GET, POST) associated with this vulnerability.", + "smithy.api#required": {} + } + }, + "cveId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional." + } + }, + "cvss3Vector": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional." + } + }, + "cvss3Score": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectors": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectorsResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/api_endpoint_vulnerability_connectors", + "code": 200 + }, + "smithy.api#documentation": "List all API Endpoint Vulnerabilities\n\nList `ApiEndpointVulnerabilityConnectors` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemQueryParamsItem": { + "type": "structure", + "members": { + "key": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The API query param key associated with this vulnerability occurrence.", + "smithy.api#required": {} + } + }, + "value": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The API query param value associated with this vulnerability occurrence.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemQueryParamsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemQueryParamsItem" + }, + "traits": { + "smithy.api#documentation": "The API params associated with this vulnerability." + } + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemHeadersItem": { + "type": "structure", + "members": { + "key": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The API header key associated with this vulnerability occurrence.", + "smithy.api#required": {} + } + }, + "value": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The API header value associated with this vulnerability occurrence.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemHeadersList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemHeadersItem" + }, + "traits": { + "smithy.api#documentation": "The API headers associated with this vulnerability." + } + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItem": { + "type": "structure", + "members": { + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Markdown description of this API endpoint vulnerability occurrence.", + "smithy.api#required": {} + } + }, + "fromUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The API endpoint URL associated with this vulnerability occurrence." + } + }, + "queryParams": { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemQueryParamsList", + "traits": { + "smithy.api#documentation": "The API params associated with this vulnerability." + } + }, + "headers": { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemHeadersList", + "traits": { + "smithy.api#documentation": "The API headers associated with this vulnerability." + } + }, + "body": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The body of the request passed to the API, with sensitive information redacted." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItem" + }, + "traits": { + "smithy.api#documentation": "A list of occurrences of vulnerable API endpoints." + } + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "occurrences": { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesList", + "traits": { + "smithy.api#documentation": "A list of occurrences of vulnerable API endpoints.", + "smithy.api#required": {} + } + }, + "severity": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The severity of the vulnerability, on a scale of 0 to 10. This will be rounded to the nearest tenth.", + "smithy.api#required": {} + } + }, + "vulnerableComponentUniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A description of the vulnerability.", + "smithy.api#required": {} + } + }, + "remediationInstructions": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Instructions for remediating the vulnerability.", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vulnerable URL.", + "smithy.api#required": {} + } + }, + "httpMethod": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The HTTP method (eg: GET, POST) associated with this vulnerability.", + "smithy.api#required": {} + } + }, + "cveId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional." + } + }, + "cvss3Vector": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional." + } + }, + "cvss3Score": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectors": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectorsResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/api_endpoint_vulnerability_connectors", + "code": 200 + }, + "smithy.api#documentation": "Sync all API Endpoint Vulnerabilities\n\nTo send us data related to API endpoint vulnerabilities. Note that you must first sync `VulnerableComponent` resources before sending us this data, and this sync should reference the `uniqueId` field in the `VulnerableComponent` resource.\n\nThis call replaces ALL existing `ApiEndpointVulnerabilityConnectors` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `ApiEndpointVulnerabilityConnectors` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `ApiEndpointVulnerabilityConnectors`." + } + }, + "com.vanta.build_integrations#GetBackgroundCheckConnectorRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetBackgroundCheckConnectorResponseResourcesItemStatus": { + "type": "enum", + "members": { + "INCOMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCOMPLETE" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE" + } + } + }, + "traits": { + "smithy.api#documentation": "The current status of the background check." + } + }, + "com.vanta.build_integrations#GetBackgroundCheckConnectorResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "fullName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The full name of the employee or contractor undergoing the background check.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the employee or contractor undergoing the background check.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.build_integrations#GetBackgroundCheckConnectorResponseResourcesItemStatus", + "traits": { + "smithy.api#documentation": "The current status of the background check.", + "smithy.api#required": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "If complete, the date of completion of the background check." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetBackgroundCheckConnectorResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetBackgroundCheckConnectorResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetBackgroundCheckConnectorResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetBackgroundCheckConnectorResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetBackgroundCheckConnector": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetBackgroundCheckConnectorRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetBackgroundCheckConnectorResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/background_check_connector", + "code": 200 + }, + "smithy.api#documentation": "List all Background Checks\n\nList `BackgroundCheckConnector` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutBackgroundCheckConnectorRequestResourcesItemStatus": { + "type": "enum", + "members": { + "INCOMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCOMPLETE" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE" + } + } + }, + "traits": { + "smithy.api#documentation": "The current status of the background check." + } + }, + "com.vanta.build_integrations#PutBackgroundCheckConnectorRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "fullName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The full name of the employee or contractor undergoing the background check.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the employee or contractor undergoing the background check.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.build_integrations#PutBackgroundCheckConnectorRequestResourcesItemStatus", + "traits": { + "smithy.api#documentation": "The current status of the background check.", + "smithy.api#required": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "If complete, the date of completion of the background check." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutBackgroundCheckConnectorRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutBackgroundCheckConnectorRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutBackgroundCheckConnectorRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutBackgroundCheckConnectorRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutBackgroundCheckConnectorResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutBackgroundCheckConnector": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutBackgroundCheckConnectorRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutBackgroundCheckConnectorResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/background_check_connector", + "code": 200 + }, + "smithy.api#documentation": "Sync all Background Checks\n\nTo send us data regarding employee/contractor background checks, you send us `BackgroundCheckConnector` resources. This helps us determine current background check statuses.\n\nThis call replaces ALL existing `BackgroundCheckConnector` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `BackgroundCheckConnector` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `BackgroundCheckConnector`." + } + }, + "com.vanta.build_integrations#GetCustomResourceRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetCustomResourceResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetCustomResourceResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetCustomResourceResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetCustomResourceResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetCustomResourceResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetCustomResource": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetCustomResourceRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetCustomResourceResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/custom_resource", + "code": 200 + }, + "smithy.api#documentation": "List all Custom Resources\n\nList `CustomResource` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutCustomResourceRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutCustomResourceRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutCustomResourceRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutCustomResourceRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutCustomResourceRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutCustomResourceResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutCustomResource": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutCustomResourceRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutCustomResourceResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/custom_resource", + "code": 200 + }, + "smithy.api#documentation": "Sync all Custom Resources\n\nTo send data of custom resource that you want to build custom tests on, use `CustomResource`.\n\nThis call replaces ALL existing `CustomResource` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `CustomResource` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `CustomResource`." + } + }, + "com.vanta.build_integrations#UploadFileForDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "file": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "effectiveAtDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date indicating when the document is effective from." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the uploaded document." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#UploadedFileT": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the document.", + "smithy.api#required": {} + } + }, + "fileName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The file name of the document.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's title.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's description", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "mimeType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Mime type of the document.", + "smithy.api#required": {} + } + }, + "uploadedBy": { + "target": "com.vanta.build_integrations#UploadedFileTUploadedBy", + "traits": { + "smithy.api#documentation": "The actor who uploaded this document. It could be a user or an app.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date of when the document was uploaded.", + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the document was last updated.", + "smithy.api#required": {} + } + }, + "deletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date of when the document was deleted. Is set to null if the document has not been deleted.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "effectiveDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's effective date.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's URL.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#UploadedDocumentUploadedByType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USER" + } + }, + "APPLICATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPLICATION" + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#UploadedFileTUploadedBy": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.build_integrations#UploadedDocumentUploadedByType", + "traits": { + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The actor who uploaded this document. It could be a user or an app." + } + }, + "com.vanta.build_integrations#UploadFileForDocument": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#UploadFileForDocumentRequest" + }, + "output": { + "target": "com.vanta.build_integrations#UploadedFileT" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1/documents/{documentId}/uploads", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Upload file for document\n\nUpload a file for a document.", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.build_integrations#GetMacosUserComputerRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemApplicationsItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the application.", + "smithy.api#required": {} + } + }, + "bundleId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The bundle identifier of the application.", + "smithy.api#required": {} + } + }, + "lastOpenedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The last time the application was opened." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemApplicationsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemApplicationsItem" + }, + "traits": { + "smithy.api#documentation": "All the installed Mac Apps on the system." + } + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemBrowserExtensionsItemBrowser": { + "type": "enum", + "members": { + "CHROME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CHROME" + } + }, + "FIREFOX": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FIREFOX" + } + }, + "OPERA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OPERA" + } + }, + "SAFARI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SAFARI" + } + }, + "EDGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EDGE" + } + } + }, + "traits": { + "smithy.api#documentation": "The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum." + } + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemBrowserExtensionsItem": { + "type": "structure", + "members": { + "extensionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier of the browser extension.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the browser extension.", + "smithy.api#required": {} + } + }, + "browser": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemBrowserExtensionsItemBrowser", + "traits": { + "smithy.api#documentation": "The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemBrowserExtensionsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemBrowserExtensionsItem" + }, + "traits": { + "smithy.api#documentation": "A list of browser extensions on this device. Used to match against known password managers to demonstrate use." + } + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemDrivesItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the drive.", + "smithy.api#required": {} + } + }, + "encrypted": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Does the drive have some sort of encryption on it.", + "smithy.api#required": {} + } + }, + "filevaultEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Does the drive have filevault enabled.", + "smithy.api#required": {} + } + }, + "isBootVolume": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Metadata about the boot volume helps Vanta skip checking volumes that aren't relevant, like USB Drives." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemDrivesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemDrivesItem" + }, + "traits": { + "smithy.api#documentation": "A list of drives on this device. Used to verify encryption status." + } + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem" + }, + "traits": { + "smithy.api#documentation": "If the source system cannot easily retrieve screenlock policies, it's OK to skip this data." + } + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemUsersItemScreenlockSettings": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemUsersItem": { + "type": "structure", + "members": { + "username": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The user's username. Does not have to be unique.", + "smithy.api#required": {} + } + }, + "screenlockPolicies": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList", + "traits": { + "smithy.api#documentation": "If the source system cannot easily retrieve screenlock policies, it's OK to skip this data.", + "smithy.api#required": {} + } + }, + "screenlockSettings": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemUsersItemScreenlockSettings", + "traits": { + "smithy.api#required": {} + } + }, + "lastLoginTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The last time the user logged in to the device, if available." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemUsersList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemUsersItem" + }, + "traits": { + "smithy.api#documentation": "The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely." + } + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemSystemScreenlockPoliciesItem": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemSystemScreenlockPoliciesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemSystemScreenlockPoliciesItem" + }, + "traits": { + "smithy.api#documentation": "System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests." + } + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemPasswordPolicy": { + "type": "structure", + "members": { + "minimumLengthRequirement": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "If the system has a password policy, what the minimum password length requirement is.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "collectedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A timestamp that indicates when the data being sent was collected from the host computer. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field.", + "smithy.api#required": {} + } + }, + "osName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The OS name. Example: `MacOS Monterey`.", + "smithy.api#required": {} + } + }, + "osVersion": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The OS version. Example: `Version 12.4`.", + "smithy.api#required": {} + } + }, + "hardwareUuid": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The hardware UUID/UDID of the device.", + "smithy.api#required": {} + } + }, + "serialNumber": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The hardware serial number of the device.", + "smithy.api#required": {} + } + }, + "applications": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemApplicationsList", + "traits": { + "smithy.api#documentation": "All the installed Mac Apps on the system.", + "smithy.api#required": {} + } + }, + "browserExtensions": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemBrowserExtensionsList", + "traits": { + "smithy.api#documentation": "A list of browser extensions on this device. Used to match against known password managers to demonstrate use.", + "smithy.api#required": {} + } + }, + "drives": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemDrivesList", + "traits": { + "smithy.api#documentation": "A list of drives on this device. Used to verify encryption status.", + "smithy.api#required": {} + } + }, + "users": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemUsersList", + "traits": { + "smithy.api#documentation": "The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely.", + "smithy.api#required": {} + } + }, + "systemScreenlockPolicies": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemSystemScreenlockPoliciesList", + "traits": { + "smithy.api#documentation": "System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests.", + "smithy.api#required": {} + } + }, + "isManaged": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Is the system managed by a Mobile Device Management system.", + "smithy.api#required": {} + } + }, + "autoUpdatesEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Does the system have auto-updates enabled.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the owner of the system, if it's known." + } + }, + "passwordPolicy": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItemPasswordPolicy" + }, + "lastEnrolledTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A timestamp that indicates when the host computer was last enrolled within your system. If the computer has been un-enrolled and then re-enrolled, send data for the most recent enrollment." + } + }, + "isXProtectEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Is XProtect enabled on the system." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetMacosUserComputerResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetMacosUserComputer": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetMacosUserComputerRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetMacosUserComputerResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/macos_user_computer", + "code": 200 + }, + "smithy.api#documentation": "List all MacOS User Computers\n\nList `MacosUserComputer` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemApplicationsItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the application.", + "smithy.api#required": {} + } + }, + "bundleId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The bundle identifier of the application.", + "smithy.api#required": {} + } + }, + "lastOpenedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The last time the application was opened." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemApplicationsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemApplicationsItem" + }, + "traits": { + "smithy.api#documentation": "All the installed Mac Apps on the system." + } + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemBrowserExtensionsItemBrowser": { + "type": "enum", + "members": { + "CHROME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CHROME" + } + }, + "FIREFOX": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FIREFOX" + } + }, + "OPERA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OPERA" + } + }, + "SAFARI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SAFARI" + } + }, + "EDGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EDGE" + } + } + }, + "traits": { + "smithy.api#documentation": "The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum." + } + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemBrowserExtensionsItem": { + "type": "structure", + "members": { + "extensionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier of the browser extension.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the browser extension.", + "smithy.api#required": {} + } + }, + "browser": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemBrowserExtensionsItemBrowser", + "traits": { + "smithy.api#documentation": "The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemBrowserExtensionsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemBrowserExtensionsItem" + }, + "traits": { + "smithy.api#documentation": "A list of browser extensions on this device. Used to match against known password managers to demonstrate use." + } + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemDrivesItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the drive.", + "smithy.api#required": {} + } + }, + "encrypted": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Does the drive have some sort of encryption on it.", + "smithy.api#required": {} + } + }, + "filevaultEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Does the drive have filevault enabled.", + "smithy.api#required": {} + } + }, + "isBootVolume": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Metadata about the boot volume helps Vanta skip checking volumes that aren't relevant, like USB Drives." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemDrivesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemDrivesItem" + }, + "traits": { + "smithy.api#documentation": "A list of drives on this device. Used to verify encryption status." + } + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemUsersItemScreenlockPoliciesItem": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemUsersItemScreenlockPoliciesItem" + }, + "traits": { + "smithy.api#documentation": "If the source system cannot easily retrieve screenlock policies, it's OK to skip this data." + } + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemUsersItemScreenlockSettings": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemUsersItem": { + "type": "structure", + "members": { + "username": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The user's username. Does not have to be unique.", + "smithy.api#required": {} + } + }, + "screenlockPolicies": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList", + "traits": { + "smithy.api#documentation": "If the source system cannot easily retrieve screenlock policies, it's OK to skip this data.", + "smithy.api#required": {} + } + }, + "screenlockSettings": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemUsersItemScreenlockSettings", + "traits": { + "smithy.api#required": {} + } + }, + "lastLoginTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The last time the user logged in to the device, if available." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemUsersList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemUsersItem" + }, + "traits": { + "smithy.api#documentation": "The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely." + } + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemSystemScreenlockPoliciesItem": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemSystemScreenlockPoliciesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemSystemScreenlockPoliciesItem" + }, + "traits": { + "smithy.api#documentation": "System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests." + } + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemPasswordPolicy": { + "type": "structure", + "members": { + "minimumLengthRequirement": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "If the system has a password policy, what the minimum password length requirement is.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "collectedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A timestamp that indicates when the data being sent was collected from the host computer. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field.", + "smithy.api#required": {} + } + }, + "osName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The OS name. Example: `MacOS Monterey`.", + "smithy.api#required": {} + } + }, + "osVersion": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The OS version. Example: `Version 12.4`.", + "smithy.api#required": {} + } + }, + "hardwareUuid": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The hardware UUID/UDID of the device.", + "smithy.api#required": {} + } + }, + "serialNumber": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The hardware serial number of the device.", + "smithy.api#required": {} + } + }, + "applications": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemApplicationsList", + "traits": { + "smithy.api#documentation": "All the installed Mac Apps on the system.", + "smithy.api#required": {} + } + }, + "browserExtensions": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemBrowserExtensionsList", + "traits": { + "smithy.api#documentation": "A list of browser extensions on this device. Used to match against known password managers to demonstrate use.", + "smithy.api#required": {} + } + }, + "drives": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemDrivesList", + "traits": { + "smithy.api#documentation": "A list of drives on this device. Used to verify encryption status.", + "smithy.api#required": {} + } + }, + "users": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemUsersList", + "traits": { + "smithy.api#documentation": "The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely.", + "smithy.api#required": {} + } + }, + "systemScreenlockPolicies": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemSystemScreenlockPoliciesList", + "traits": { + "smithy.api#documentation": "System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests.", + "smithy.api#required": {} + } + }, + "isManaged": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Is the system managed by a Mobile Device Management system.", + "smithy.api#required": {} + } + }, + "autoUpdatesEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Does the system have auto-updates enabled.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the owner of the system, if it's known." + } + }, + "passwordPolicy": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItemPasswordPolicy" + }, + "lastEnrolledTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A timestamp that indicates when the host computer was last enrolled within your system. If the computer has been un-enrolled and then re-enrolled, send data for the most recent enrollment." + } + }, + "isXProtectEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Is XProtect enabled on the system." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutMacosUserComputerRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutMacosUserComputerResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutMacosUserComputer": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutMacosUserComputerRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutMacosUserComputerResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/macos_user_computer", + "code": 200 + }, + "smithy.api#documentation": "Sync all MacOS User Computers\n\nTo send us data related to employee/contractor MacOS computers, you send us `MacosUserComputer` resources. This helps us determine important security properties, like whether devices have encrypted drives, have anti-virus installed or have password managers installed.\n\nThis call replaces ALL existing `MacosUserComputer` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `MacosUserComputer` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `MacosUserComputer`." + } + }, + "com.vanta.build_integrations#GetPackageVulnerabilityConnectorsRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetPackageVulnerabilityConnectorsResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "packageName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the package associated with the vulnerability.", + "smithy.api#required": {} + } + }, + "packageVersion": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The version of the package associated with the vulnerability.", + "smithy.api#required": {} + } + }, + "severity": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The severity of the vulnerability, on a scale of 0 to 10. This will be rounded to the nearest tenth.", + "smithy.api#required": {} + } + }, + "vulnerableComponentUniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A description of the vulnerability.", + "smithy.api#required": {} + } + }, + "isResolvable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the vulnerability can be resolved.", + "smithy.api#required": {} + } + }, + "remediationInstructions": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Instructions for remediating the vulnerability.", + "smithy.api#required": {} + } + }, + "isReachable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether there is a code path to the vulnerable code in this package. This field is optional." + } + }, + "cveId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional." + } + }, + "cvss3Vector": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional." + } + }, + "cvss3Score": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetPackageVulnerabilityConnectorsResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetPackageVulnerabilityConnectorsResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetPackageVulnerabilityConnectorsResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetPackageVulnerabilityConnectorsResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetPackageVulnerabilityConnectors": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetPackageVulnerabilityConnectorsRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetPackageVulnerabilityConnectorsResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/package_vulnerability_connectors", + "code": 200 + }, + "smithy.api#documentation": "List all Package Vulnerabilities\n\nList `PackageVulnerabilityConnectors` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutPackageVulnerabilityConnectorsRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "packageName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the package associated with the vulnerability.", + "smithy.api#required": {} + } + }, + "packageVersion": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The version of the package associated with the vulnerability.", + "smithy.api#required": {} + } + }, + "severity": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The severity of the vulnerability, on a scale of 0 to 10. This will be rounded to the nearest tenth.", + "smithy.api#required": {} + } + }, + "vulnerableComponentUniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A description of the vulnerability.", + "smithy.api#required": {} + } + }, + "isResolvable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the vulnerability can be resolved.", + "smithy.api#required": {} + } + }, + "remediationInstructions": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Instructions for remediating the vulnerability.", + "smithy.api#required": {} + } + }, + "isReachable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether there is a code path to the vulnerable code in this package. This field is optional." + } + }, + "cveId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional." + } + }, + "cvss3Vector": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional." + } + }, + "cvss3Score": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutPackageVulnerabilityConnectorsRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutPackageVulnerabilityConnectorsRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutPackageVulnerabilityConnectorsRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutPackageVulnerabilityConnectorsRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutPackageVulnerabilityConnectorsResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutPackageVulnerabilityConnectors": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutPackageVulnerabilityConnectorsRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutPackageVulnerabilityConnectorsResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/package_vulnerability_connectors", + "code": 200 + }, + "smithy.api#documentation": "Sync all Package Vulnerabilities\n\nTo send us data related to package vulnerabilities. Note that you must first sync `VulnerableComponent` resources before sending us this data, and this sync should reference the `uniqueId` field in the `VulnerableComponent` resource.\n\nThis call replaces ALL existing `PackageVulnerabilityConnectors` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `PackageVulnerabilityConnectors` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `PackageVulnerabilityConnectors`." + } + }, + "com.vanta.build_integrations#GetSecretRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetSecretResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the secret.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A short description of the secret, if any.", + "smithy.api#required": {} + } + }, + "createdTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the secret was created.", + "smithy.api#required": {} + } + }, + "creator": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The creator of the secret.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The current owner of the secret. Vanta will check that every secret has a valid owner.", + "smithy.api#required": {} + } + }, + "updatedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the secret was last updated." + } + }, + "lastAccessedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the secret was last accessed." + } + }, + "expiresTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the secret is set to expire, if relevant." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetSecretResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetSecretResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetSecretResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetSecretResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetSecret": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetSecretRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetSecretResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/secret", + "code": 200 + }, + "smithy.api#documentation": "List all secrets\n\nList `Secret` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutSecretRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the secret.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A short description of the secret, if any.", + "smithy.api#required": {} + } + }, + "createdTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the secret was created.", + "smithy.api#required": {} + } + }, + "creator": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The creator of the secret.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The current owner of the secret. Vanta will check that every secret has a valid owner.", + "smithy.api#required": {} + } + }, + "updatedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the secret was last updated." + } + }, + "lastAccessedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the secret was last accessed." + } + }, + "expiresTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the secret is set to expire, if relevant." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutSecretRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutSecretRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutSecretRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutSecretRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutSecretResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutSecret": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutSecretRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutSecretResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/secret", + "code": 200 + }, + "smithy.api#documentation": "Sync all secrets\n\nTo send metadata of a secret used to access applications or infrastructure, use `Secret`.\n\nThis call replaces ALL existing `Secret` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `Secret` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `Secret`." + } + }, + "com.vanta.build_integrations#GetSecurityTaskRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetSecurityTaskResponseResourcesItemTaskState": { + "type": "enum", + "members": { + "OPEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OPEN" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "CLOSED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CLOSED" + } + } + }, + "traits": { + "smithy.api#documentation": "The status of the task. If your application supports additional states, use the closest approximation." + } + }, + "com.vanta.build_integrations#GetSecurityTaskResponseResourcesItemPriority": { + "type": "enum", + "members": { + "P0": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P0" + } + }, + "P1": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1" + } + }, + "P2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P2" + } + }, + "P3": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P3" + } + }, + "P4": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P4" + } + } + }, + "traits": { + "smithy.api#documentation": "Priorities are mapped against SLAs for tasks. If your task system does not have fixed priorities, consider letting users configure priorities through labels." + } + }, + "com.vanta.build_integrations#GetSecurityTaskResponseResourcesItemAssigneesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The set of users assigned to the tasks. Emails do not necessarily need to be Vanta users." + } + }, + "com.vanta.build_integrations#GetSecurityTaskResponseResourcesItemLabelsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The set of task tags or labels." + } + }, + "com.vanta.build_integrations#GetSecurityTaskResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "taskId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The task ID, as present in the source application. This will be shown in Vanta to help customers match tasks if necessary.", + "smithy.api#required": {} + } + }, + "taskTitle": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title of the task, as present in the source application. This will be shown in Vanta to help customers match tasks if necessary.", + "smithy.api#required": {} + } + }, + "createdTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the task was created.", + "smithy.api#required": {} + } + }, + "taskState": { + "target": "com.vanta.build_integrations#GetSecurityTaskResponseResourcesItemTaskState", + "traits": { + "smithy.api#documentation": "The status of the task. If your application supports additional states, use the closest approximation.", + "smithy.api#required": {} + } + }, + "priority": { + "target": "com.vanta.build_integrations#GetSecurityTaskResponseResourcesItemPriority", + "traits": { + "smithy.api#documentation": "Priorities are mapped against SLAs for tasks. If your task system does not have fixed priorities, consider letting users configure priorities through labels.", + "smithy.api#required": {} + } + }, + "assignees": { + "target": "com.vanta.build_integrations#GetSecurityTaskResponseResourcesItemAssigneesList", + "traits": { + "smithy.api#documentation": "The set of users assigned to the tasks. Emails do not necessarily need to be Vanta users.", + "smithy.api#required": {} + } + }, + "creator": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The creator of the task.", + "smithy.api#required": {} + } + }, + "labels": { + "target": "com.vanta.build_integrations#GetSecurityTaskResponseResourcesItemLabelsList", + "traits": { + "smithy.api#documentation": "The set of task tags or labels.", + "smithy.api#required": {} + } + }, + "closedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the task was closed, if the task was closed. Required if `taskState` is `CLOSED`, otherwise must be absent." + } + }, + "updatedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the task was last updated." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetSecurityTaskResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetSecurityTaskResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetSecurityTaskResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetSecurityTaskResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetSecurityTask": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetSecurityTaskRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetSecurityTaskResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/security_task", + "code": 200 + }, + "smithy.api#documentation": "List all security tasks\n\nList `SecurityTask` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutSecurityTaskRequestResourcesItemTaskState": { + "type": "enum", + "members": { + "OPEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OPEN" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "CLOSED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CLOSED" + } + } + }, + "traits": { + "smithy.api#documentation": "The status of the task. If your application supports additional states, use the closest approximation." + } + }, + "com.vanta.build_integrations#PutSecurityTaskRequestResourcesItemPriority": { + "type": "enum", + "members": { + "P0": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P0" + } + }, + "P1": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1" + } + }, + "P2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P2" + } + }, + "P3": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P3" + } + }, + "P4": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P4" + } + } + }, + "traits": { + "smithy.api#documentation": "Priorities are mapped against SLAs for tasks. If your task system does not have fixed priorities, consider letting users configure priorities through labels." + } + }, + "com.vanta.build_integrations#PutSecurityTaskRequestResourcesItemAssigneesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The set of users assigned to the tasks. Emails do not necessarily need to be Vanta users." + } + }, + "com.vanta.build_integrations#PutSecurityTaskRequestResourcesItemLabelsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The set of task tags or labels." + } + }, + "com.vanta.build_integrations#PutSecurityTaskRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "taskId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The task ID, as present in the source application. This will be shown in Vanta to help customers match tasks if necessary.", + "smithy.api#required": {} + } + }, + "taskTitle": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title of the task, as present in the source application. This will be shown in Vanta to help customers match tasks if necessary.", + "smithy.api#required": {} + } + }, + "createdTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the task was created.", + "smithy.api#required": {} + } + }, + "taskState": { + "target": "com.vanta.build_integrations#PutSecurityTaskRequestResourcesItemTaskState", + "traits": { + "smithy.api#documentation": "The status of the task. If your application supports additional states, use the closest approximation.", + "smithy.api#required": {} + } + }, + "priority": { + "target": "com.vanta.build_integrations#PutSecurityTaskRequestResourcesItemPriority", + "traits": { + "smithy.api#documentation": "Priorities are mapped against SLAs for tasks. If your task system does not have fixed priorities, consider letting users configure priorities through labels.", + "smithy.api#required": {} + } + }, + "assignees": { + "target": "com.vanta.build_integrations#PutSecurityTaskRequestResourcesItemAssigneesList", + "traits": { + "smithy.api#documentation": "The set of users assigned to the tasks. Emails do not necessarily need to be Vanta users.", + "smithy.api#required": {} + } + }, + "creator": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The creator of the task.", + "smithy.api#required": {} + } + }, + "labels": { + "target": "com.vanta.build_integrations#PutSecurityTaskRequestResourcesItemLabelsList", + "traits": { + "smithy.api#documentation": "The set of task tags or labels.", + "smithy.api#required": {} + } + }, + "closedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the task was closed, if the task was closed. Required if `taskState` is `CLOSED`, otherwise must be absent." + } + }, + "updatedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the task was last updated." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutSecurityTaskRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutSecurityTaskRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutSecurityTaskRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutSecurityTaskRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutSecurityTaskResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutSecurityTask": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutSecurityTaskRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutSecurityTaskResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/security_task", + "code": 200 + }, + "smithy.api#documentation": "Sync all security tasks\n\nTo send us data related to security relevant tasks/follow-ups your system, you send us `SecurityTask` resources. This helps us determine whether security relevant tasks are being completed in a timely manner.\n\nThis call replaces ALL existing `SecurityTask` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `SecurityTask` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `SecurityTask`." + } + }, + "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesItem": { + "type": "structure", + "members": { + "path": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The path to the file where the vulnerability was found.", + "smithy.api#required": {} + } + }, + "beginLine": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The line number where the vulnerability begins.", + "smithy.api#required": {} + } + }, + "endLine": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The line number where the vulnerability ends.", + "smithy.api#required": {} + } + }, + "beginColumn": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The column number where the vulnerability begins.", + "smithy.api#required": {} + } + }, + "endColumn": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The column number where the vulnerability ends.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesItem" + }, + "traits": { + "smithy.api#documentation": "The path to each point in the source code where a vulnerability has been revealed through static analysis." + } + }, + "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "occurrences": { + "target": "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesList", + "traits": { + "smithy.api#documentation": "The path to each point in the source code where a vulnerability has been revealed through static analysis.", + "smithy.api#required": {} + } + }, + "severity": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The severity of the vulnerability, on a scale of 0 to 10.", + "smithy.api#required": {} + } + }, + "confidence": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The confidence in the vulnerability, on a scale of 0-10.", + "smithy.api#required": {} + } + }, + "isResolvable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the vulnerability can be resolved.", + "smithy.api#required": {} + } + }, + "vulnerableComponentUniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A description of the vulnerability.", + "smithy.api#required": {} + } + }, + "remediationInstructions": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Instructions for remediating the vulnerability.", + "smithy.api#required": {} + } + }, + "cveId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional." + } + }, + "cvss3Vector": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional." + } + }, + "cvss3Score": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectors": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectorsResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/static_analysis_code_vulnerability_connectors", + "code": 200 + }, + "smithy.api#documentation": "List all Static Code Analysis Vulnerabilities\n\nList `StaticAnalysisCodeVulnerabilityConnectors` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItemOccurrencesItem": { + "type": "structure", + "members": { + "path": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The path to the file where the vulnerability was found.", + "smithy.api#required": {} + } + }, + "beginLine": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The line number where the vulnerability begins.", + "smithy.api#required": {} + } + }, + "endLine": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The line number where the vulnerability ends.", + "smithy.api#required": {} + } + }, + "beginColumn": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The column number where the vulnerability begins.", + "smithy.api#required": {} + } + }, + "endColumn": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The column number where the vulnerability ends.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItemOccurrencesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItemOccurrencesItem" + }, + "traits": { + "smithy.api#documentation": "The path to each point in the source code where a vulnerability has been revealed through static analysis." + } + }, + "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "occurrences": { + "target": "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItemOccurrencesList", + "traits": { + "smithy.api#documentation": "The path to each point in the source code where a vulnerability has been revealed through static analysis.", + "smithy.api#required": {} + } + }, + "severity": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The severity of the vulnerability, on a scale of 0 to 10.", + "smithy.api#required": {} + } + }, + "confidence": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The confidence in the vulnerability, on a scale of 0-10.", + "smithy.api#required": {} + } + }, + "isResolvable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the vulnerability can be resolved.", + "smithy.api#required": {} + } + }, + "vulnerableComponentUniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A description of the vulnerability.", + "smithy.api#required": {} + } + }, + "remediationInstructions": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Instructions for remediating the vulnerability.", + "smithy.api#required": {} + } + }, + "cveId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional." + } + }, + "cvss3Vector": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional." + } + }, + "cvss3Score": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectors": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectorsResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/static_analysis_code_vulnerability_connectors", + "code": 200 + }, + "smithy.api#documentation": "Sync all Static Code Analysis Vulnerabilities\n\nTo send us data related to static code analysis vulnerabilities. Note that you must first sync `VulnerableComponent` resources before sending us this data, and this sync should reference the `uniqueId` field in the `VulnerableComponent` resource.\n\nThis call replaces ALL existing `StaticAnalysisCodeVulnerabilityConnectors` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `StaticAnalysisCodeVulnerabilityConnectors` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `StaticAnalysisCodeVulnerabilityConnectors`." + } + }, + "com.vanta.build_integrations#GetUserAccountRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetUserAccountResponseResourcesItemPermissionLevel": { + "type": "enum", + "members": { + "ADMIN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ADMIN" + } + }, + "EDITOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EDITOR" + } + }, + "BASE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BASE" + } + } + }, + "traits": { + "smithy.api#documentation": "What the permission level of the user is. If your system supports more advanced roles, find the closest approximation. This will be used to help populate Vanta access reviews and help customers ensure that the right set of users have access to their relevant systems." + } + }, + "com.vanta.build_integrations#GetUserAccountResponseResourcesItemStatus": { + "type": "enum", + "members": { + "ACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACTIVE" + } + }, + "DEACTIVATED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DEACTIVATED" + } + } + }, + "traits": { + "smithy.api#documentation": "The status of the user. It's acceptable to omit any deactivated users from your application, but if your application has access to deactivated users, it's preferable to send them over with this status." + } + }, + "com.vanta.build_integrations#GetUserAccountResponseResourcesItemMfaMethodsItem": { + "type": "enum", + "members": { + "UNSUPPORTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UNSUPPORTED" + } + }, + "DISABLED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DISABLED" + } + }, + "SMS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SMS" + } + }, + "EMAIL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EMAIL" + } + }, + "OTP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OTP" + } + }, + "HARDWARE_TOKEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HARDWARE_TOKEN" + } + }, + "PUSH_PROMPT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PUSH_PROMPT" + } + } + }, + "traits": { + "smithy.api#documentation": "The individual MFA setting." + } + }, + "com.vanta.build_integrations#GetUserAccountResponseResourcesItemMfaMethodsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetUserAccountResponseResourcesItemMfaMethodsItem" + }, + "traits": { + "smithy.api#documentation": "The MFA settings of the user. This helps customers verify that their users are adequately protecting their accounts. This value is ignored if authMethod is SSO." + } + }, + "com.vanta.build_integrations#GetUserAccountResponseResourcesItemAuthMethod": { + "type": "enum", + "members": { + "SSO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SSO" + } + }, + "PASSWORD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PASSWORD" + } + }, + "TOKEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TOKEN" + } + }, + "BIOMETRIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BIOMETRIC" + } + } + }, + "traits": { + "smithy.api#documentation": "How the user logs into the system. This is useful for us to validate security properties, like ensuring MFA is enabled if the user logs in with a password." + } + }, + "com.vanta.build_integrations#GetUserAccountResponseResourcesItemGroupIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "If the user belongs to any groups/teams in the product, those corresponding group IDs. We'll map these to groups in our product in the future." + } + }, + "com.vanta.build_integrations#GetUserAccountResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "fullName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The full name of the corresponding user. If your system splits name by given name and family name, send us space separated values.", + "smithy.api#required": {} + } + }, + "accountName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "In case a fullName is not relevant, like a machine account, populate this field.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the user. This lets us connect accounts to Vanta users.", + "smithy.api#required": {} + } + }, + "permissionLevel": { + "target": "com.vanta.build_integrations#GetUserAccountResponseResourcesItemPermissionLevel", + "traits": { + "smithy.api#documentation": "What the permission level of the user is. If your system supports more advanced roles, find the closest approximation. This will be used to help populate Vanta access reviews and help customers ensure that the right set of users have access to their relevant systems.", + "smithy.api#required": {} + } + }, + "createdTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which this user was created in the system.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.build_integrations#GetUserAccountResponseResourcesItemStatus", + "traits": { + "smithy.api#documentation": "The status of the user. It's acceptable to omit any deactivated users from your application, but if your application has access to deactivated users, it's preferable to send them over with this status.", + "smithy.api#required": {} + } + }, + "mfaEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "This value is ignored if `authMethod` is SSO.", + "smithy.api#required": {} + } + }, + "mfaMethods": { + "target": "com.vanta.build_integrations#GetUserAccountResponseResourcesItemMfaMethodsList", + "traits": { + "smithy.api#documentation": "The MFA settings of the user. This helps customers verify that their users are adequately protecting their accounts. This value is ignored if authMethod is SSO.", + "smithy.api#required": {} + } + }, + "authMethod": { + "target": "com.vanta.build_integrations#GetUserAccountResponseResourcesItemAuthMethod", + "traits": { + "smithy.api#documentation": "How the user logs into the system. This is useful for us to validate security properties, like ensuring MFA is enabled if the user logs in with a password.", + "smithy.api#required": {} + } + }, + "roleDescription": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable description of the user's role." + } + }, + "updatedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The last time the user was updated in the system." + } + }, + "deactivatedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "If the user is deactivated, the timestamp of that deactivation." + } + }, + "lastLoginTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which the user last logged in." + } + }, + "lastPasswordResetTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which the user last reset their password. Helps with future Vanta functionality.", + "smithy.api#sensitive": {} + } + }, + "groupIds": { + "target": "com.vanta.build_integrations#GetUserAccountResponseResourcesItemGroupIdsList", + "traits": { + "smithy.api#documentation": "If the user belongs to any groups/teams in the product, those corresponding group IDs. We'll map these to groups in our product in the future." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetUserAccountResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetUserAccountResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetUserAccountResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetUserAccountResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetUserAccount": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetUserAccountRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetUserAccountResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/user_account", + "code": 200 + }, + "smithy.api#documentation": "List all user accounts\n\nList `UserAccount` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutUserAccountRequestResourcesItemPermissionLevel": { + "type": "enum", + "members": { + "ADMIN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ADMIN" + } + }, + "EDITOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EDITOR" + } + }, + "BASE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BASE" + } + } + }, + "traits": { + "smithy.api#documentation": "What the permission level of the user is. If your system supports more advanced roles, find the closest approximation. This will be used to help populate Vanta access reviews and help customers ensure that the right set of users have access to their relevant systems." + } + }, + "com.vanta.build_integrations#PutUserAccountRequestResourcesItemStatus": { + "type": "enum", + "members": { + "ACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACTIVE" + } + }, + "DEACTIVATED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DEACTIVATED" + } + } + }, + "traits": { + "smithy.api#documentation": "The status of the user. It's acceptable to omit any deactivated users from your application, but if your application has access to deactivated users, it's preferable to send them over with this status." + } + }, + "com.vanta.build_integrations#PutUserAccountRequestResourcesItemMfaMethodsItem": { + "type": "enum", + "members": { + "UNSUPPORTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UNSUPPORTED" + } + }, + "DISABLED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DISABLED" + } + }, + "SMS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SMS" + } + }, + "EMAIL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EMAIL" + } + }, + "OTP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OTP" + } + }, + "HARDWARE_TOKEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HARDWARE_TOKEN" + } + }, + "PUSH_PROMPT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PUSH_PROMPT" + } + } + }, + "traits": { + "smithy.api#documentation": "The individual MFA setting." + } + }, + "com.vanta.build_integrations#PutUserAccountRequestResourcesItemMfaMethodsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutUserAccountRequestResourcesItemMfaMethodsItem" + }, + "traits": { + "smithy.api#documentation": "The MFA settings of the user. This helps customers verify that their users are adequately protecting their accounts. This value is ignored if authMethod is SSO." + } + }, + "com.vanta.build_integrations#PutUserAccountRequestResourcesItemAuthMethod": { + "type": "enum", + "members": { + "SSO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SSO" + } + }, + "PASSWORD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PASSWORD" + } + }, + "TOKEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TOKEN" + } + }, + "BIOMETRIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BIOMETRIC" + } + } + }, + "traits": { + "smithy.api#documentation": "How the user logs into the system. This is useful for us to validate security properties, like ensuring MFA is enabled if the user logs in with a password." + } + }, + "com.vanta.build_integrations#PutUserAccountRequestResourcesItemGroupIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "If the user belongs to any groups/teams in the product, those corresponding group IDs. We'll map these to groups in our product in the future." + } + }, + "com.vanta.build_integrations#PutUserAccountRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "fullName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The full name of the corresponding user. If your system splits name by given name and family name, send us space separated values.", + "smithy.api#required": {} + } + }, + "accountName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "In case a fullName is not relevant, like a machine account, populate this field.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the user. This lets us connect accounts to Vanta users.", + "smithy.api#required": {} + } + }, + "permissionLevel": { + "target": "com.vanta.build_integrations#PutUserAccountRequestResourcesItemPermissionLevel", + "traits": { + "smithy.api#documentation": "What the permission level of the user is. If your system supports more advanced roles, find the closest approximation. This will be used to help populate Vanta access reviews and help customers ensure that the right set of users have access to their relevant systems.", + "smithy.api#required": {} + } + }, + "createdTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which this user was created in the system.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.build_integrations#PutUserAccountRequestResourcesItemStatus", + "traits": { + "smithy.api#documentation": "The status of the user. It's acceptable to omit any deactivated users from your application, but if your application has access to deactivated users, it's preferable to send them over with this status.", + "smithy.api#required": {} + } + }, + "mfaEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "This value is ignored if `authMethod` is SSO.", + "smithy.api#required": {} + } + }, + "mfaMethods": { + "target": "com.vanta.build_integrations#PutUserAccountRequestResourcesItemMfaMethodsList", + "traits": { + "smithy.api#documentation": "The MFA settings of the user. This helps customers verify that their users are adequately protecting their accounts. This value is ignored if authMethod is SSO.", + "smithy.api#required": {} + } + }, + "authMethod": { + "target": "com.vanta.build_integrations#PutUserAccountRequestResourcesItemAuthMethod", + "traits": { + "smithy.api#documentation": "How the user logs into the system. This is useful for us to validate security properties, like ensuring MFA is enabled if the user logs in with a password.", + "smithy.api#required": {} + } + }, + "roleDescription": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable description of the user's role." + } + }, + "updatedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The last time the user was updated in the system." + } + }, + "deactivatedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "If the user is deactivated, the timestamp of that deactivation." + } + }, + "lastLoginTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which the user last logged in." + } + }, + "lastPasswordResetTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which the user last reset their password. Helps with future Vanta functionality.", + "smithy.api#sensitive": {} + } + }, + "groupIds": { + "target": "com.vanta.build_integrations#PutUserAccountRequestResourcesItemGroupIdsList", + "traits": { + "smithy.api#documentation": "If the user belongs to any groups/teams in the product, those corresponding group IDs. We'll map these to groups in our product in the future." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutUserAccountRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutUserAccountRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutUserAccountRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutUserAccountRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutUserAccountResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutUserAccount": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutUserAccountRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutUserAccountResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/user_account", + "code": 200 + }, + "smithy.api#documentation": "Sync all user accounts\n\nTo send us data related to users in your system, you send us `UserAccount` resources. Every partner must send us `UserAccount` resources. This helps us determine whether users have appropriate levels of access and have a secure authentication mechanism.\n\nThis call replaces ALL existing `UserAccount` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `UserAccount` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and it is \"deletedAt\" time in is set to that of the `sync_all` call. The resource will still show in the Vanta UI as a Deactivated `UserAccount`, and `list_all` calls.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `UserAccount`." + } + }, + "com.vanta.build_integrations#GetUserSecurityTrainingStatusRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledItem": { + "type": "enum", + "members": { + "SOC2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SOC2" + } + }, + "ISO27001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO27001" + } + }, + "HIPAA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HIPAA" + } + }, + "PCI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI" + } + }, + "GDPR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GDPR" + } + }, + "CCPA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CCPA" + } + } + }, + "traits": { + "smithy.api#documentation": "The individual framework." + } + }, + "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledItem" + }, + "traits": { + "smithy.api#documentation": "The set of compliance or other framework requirements that can be satisfied when an employee completes this training." + } + }, + "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponseResourcesItemStatus": { + "type": "enum", + "members": { + "INCOMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCOMPLETE" + } + }, + "COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE" + } + } + }, + "traits": { + "smithy.api#documentation": "Whether the training has been fully completed." + } + }, + "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "trainingId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable ID of a training or a course. For example: gdpr-training-123.", + "smithy.api#required": {} + } + }, + "trainingName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the training. For example: \"GDPR Training\".", + "smithy.api#required": {} + } + }, + "frameworksFulfilled": { + "target": "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledList", + "traits": { + "smithy.api#documentation": "The set of compliance or other framework requirements that can be satisfied when an employee completes this training.", + "smithy.api#required": {} + } + }, + "traineeFullName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the user completing the training.", + "smithy.api#required": {} + } + }, + "traineeAccountName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The account name of the user completing the training. This field is mostly useful if the trainee doesn't have a name associated, but has an associated account with a username.", + "smithy.api#required": {} + } + }, + "traineeEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the user completing the training.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponseResourcesItemStatus", + "traits": { + "smithy.api#documentation": "Whether the training has been fully completed.", + "smithy.api#required": {} + } + }, + "trainingCreatedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which this training course was created. This field is useful as identifying metadata.", + "smithy.api#required": {} + } + }, + "trainingDueTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which this training course is due for the user. Vanta will check whether employees complete their training on time.", + "smithy.api#required": {} + } + }, + "trainingCompletedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which this training course was completed by the user." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetUserSecurityTrainingStatus": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetUserSecurityTrainingStatusRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetUserSecurityTrainingStatusResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/user_security_training_status", + "code": 200 + }, + "smithy.api#documentation": "List all user security training statuses\n\nList `UserSecurityTrainingStatus` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledItem": { + "type": "enum", + "members": { + "SOC2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SOC2" + } + }, + "ISO27001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO27001" + } + }, + "HIPAA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HIPAA" + } + }, + "PCI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI" + } + }, + "GDPR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GDPR" + } + }, + "CCPA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CCPA" + } + } + }, + "traits": { + "smithy.api#documentation": "The individual framework." + } + }, + "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledItem" + }, + "traits": { + "smithy.api#documentation": "The set of compliance or other framework requirements that can be satisfied when an employee completes this training." + } + }, + "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequestResourcesItemStatus": { + "type": "enum", + "members": { + "INCOMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCOMPLETE" + } + }, + "COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE" + } + } + }, + "traits": { + "smithy.api#documentation": "Whether the training has been fully completed." + } + }, + "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "trainingId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable ID of a training or a course. For example: gdpr-training-123.", + "smithy.api#required": {} + } + }, + "trainingName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the training. For example: \"GDPR Training\".", + "smithy.api#required": {} + } + }, + "frameworksFulfilled": { + "target": "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledList", + "traits": { + "smithy.api#documentation": "The set of compliance or other framework requirements that can be satisfied when an employee completes this training.", + "smithy.api#required": {} + } + }, + "traineeFullName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the user completing the training.", + "smithy.api#required": {} + } + }, + "traineeAccountName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The account name of the user completing the training. This field is mostly useful if the trainee doesn't have a name associated, but has an associated account with a username.", + "smithy.api#required": {} + } + }, + "traineeEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the user completing the training.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequestResourcesItemStatus", + "traits": { + "smithy.api#documentation": "Whether the training has been fully completed.", + "smithy.api#required": {} + } + }, + "trainingCreatedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which this training course was created. This field is useful as identifying metadata.", + "smithy.api#required": {} + } + }, + "trainingDueTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which this training course is due for the user. Vanta will check whether employees complete their training on time.", + "smithy.api#required": {} + } + }, + "trainingCompletedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The time at which this training course was completed by the user." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutUserSecurityTrainingStatusResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutUserSecurityTrainingStatus": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutUserSecurityTrainingStatusRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutUserSecurityTrainingStatusResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/user_security_training_status", + "code": 200 + }, + "smithy.api#documentation": "Sync all user security training statuses\n\nTo send us data related to security trainings, you send us `UserSecurityTrainingStatus` resources. This helps us determine whether users have completed their security and compliance trainings in a timely manner.\n\nThis call replaces ALL existing `UserSecurityTrainingStatus` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `UserSecurityTrainingStatus` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `UserSecurityTrainingStatus`." + } + }, + "com.vanta.build_integrations#GetVulnerableComponentRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetVulnerableComponentResponseResourcesItemTargetType": { + "type": "enum", + "members": { + "HOST": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HOST" + } + }, + "SERVER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SERVER" + } + }, + "CONTAINER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTAINER" + } + }, + "CONTAINER_REPOSITORY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTAINER_REPOSITORY" + } + }, + "CONTAINER_REPOSITORY_IMAGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTAINER_REPOSITORY_IMAGE" + } + }, + "CODE_REPOSITORY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CODE_REPOSITORY" + } + }, + "SERVERLESS_FUNCTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SERVERLESS_FUNCTION" + } + }, + "MANIFEST_FILE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MANIFEST_FILE" + } + }, + "WORKSTATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WORKSTATION" + } + }, + "OTHER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OTHER" + } + } + }, + "traits": { + "smithy.api#documentation": "The type of the system component in which a vulnerability has been detected (eg: container, source code repository)." + } + }, + "com.vanta.build_integrations#GetVulnerableComponentResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "collectedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A timestamp that indicates when the data being sent was collected from the vulnerable component. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the system component in which a vulnerability has been detected.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the system component in which a vulnerability has been detected.", + "smithy.api#required": {} + } + }, + "targetType": { + "target": "com.vanta.build_integrations#GetVulnerableComponentResponseResourcesItemTargetType", + "traits": { + "smithy.api#documentation": "The type of the system component in which a vulnerability has been detected (eg: container, source code repository).", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetVulnerableComponentResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetVulnerableComponentResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetVulnerableComponentResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetVulnerableComponentResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetVulnerableComponent": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetVulnerableComponentRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetVulnerableComponentResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/vulnerable_component", + "code": 200 + }, + "smithy.api#documentation": "List all Vulnerable Components\n\nList `VulnerableComponent` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutVulnerableComponentRequestResourcesItemTargetType": { + "type": "enum", + "members": { + "HOST": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HOST" + } + }, + "SERVER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SERVER" + } + }, + "CONTAINER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTAINER" + } + }, + "CONTAINER_REPOSITORY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTAINER_REPOSITORY" + } + }, + "CONTAINER_REPOSITORY_IMAGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTAINER_REPOSITORY_IMAGE" + } + }, + "CODE_REPOSITORY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CODE_REPOSITORY" + } + }, + "SERVERLESS_FUNCTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SERVERLESS_FUNCTION" + } + }, + "MANIFEST_FILE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MANIFEST_FILE" + } + }, + "WORKSTATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WORKSTATION" + } + }, + "OTHER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OTHER" + } + } + }, + "traits": { + "smithy.api#documentation": "The type of the system component in which a vulnerability has been detected (eg: container, source code repository)." + } + }, + "com.vanta.build_integrations#PutVulnerableComponentRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "collectedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A timestamp that indicates when the data being sent was collected from the vulnerable component. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the system component in which a vulnerability has been detected.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the system component in which a vulnerability has been detected.", + "smithy.api#required": {} + } + }, + "targetType": { + "target": "com.vanta.build_integrations#PutVulnerableComponentRequestResourcesItemTargetType", + "traits": { + "smithy.api#documentation": "The type of the system component in which a vulnerability has been detected (eg: container, source code repository).", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutVulnerableComponentRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutVulnerableComponentRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutVulnerableComponentRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutVulnerableComponentRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutVulnerableComponentResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutVulnerableComponent": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutVulnerableComponentRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutVulnerableComponentResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/vulnerable_component", + "code": 200 + }, + "smithy.api#documentation": "Sync all Vulnerable Components\n\nTo send us data related to system components that have vulnerabilities.\n\nThis call replaces ALL existing `VulnerableComponent` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `VulnerableComponent` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `VulnerableComponent`." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "resourceId", + "smithy.api#required": {}, + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemProgramsItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the application.", + "smithy.api#required": {} + } + }, + "lastOpenedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The last time the application was opened." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemProgramsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemProgramsItem" + }, + "traits": { + "smithy.api#documentation": "All the installed programs on the Windows system." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItemBrowser": { + "type": "enum", + "members": { + "CHROME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CHROME" + } + }, + "FIREFOX": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FIREFOX" + } + }, + "OPERA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OPERA" + } + }, + "SAFARI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SAFARI" + } + }, + "EDGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EDGE" + } + } + }, + "traits": { + "smithy.api#documentation": "The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItem": { + "type": "structure", + "members": { + "extensionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier of the browser extension.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the browser extension.", + "smithy.api#required": {} + } + }, + "browser": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItemBrowser", + "traits": { + "smithy.api#documentation": "The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemBrowserExtensionsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItem" + }, + "traits": { + "smithy.api#documentation": "A list of browser extensions on this device. Used to match against known password managers to demonstrate use." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemDrivesItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the drive.", + "smithy.api#required": {} + } + }, + "encrypted": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Does the drive have some sort of encryption on it.", + "smithy.api#required": {} + } + }, + "isBootVolume": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Metadata about the boot volume helps Vanta skip checking volumes that aren't relevant, like USB Drives." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemDrivesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemDrivesItem" + }, + "traits": { + "smithy.api#documentation": "A list of drives on this device. Used to verify encryption status." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem" + }, + "traits": { + "smithy.api#documentation": "If the source system cannot easily retrieve screenlock policies, it's OK to skip this data." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockSettings": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemUsersItem": { + "type": "structure", + "members": { + "username": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The user's username. Does not have to be unique.", + "smithy.api#required": {} + } + }, + "screenlockPolicies": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList", + "traits": { + "smithy.api#documentation": "If the source system cannot easily retrieve screenlock policies, it's OK to skip this data.", + "smithy.api#required": {} + } + }, + "screenlockSettings": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockSettings", + "traits": { + "smithy.api#required": {} + } + }, + "lastLoginTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The last time the user logged in to the device, if available." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemUsersList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemUsersItem" + }, + "traits": { + "smithy.api#documentation": "The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemSystemScreenlockPoliciesItem": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemSystemScreenlockPoliciesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemSystemScreenlockPoliciesItem" + }, + "traits": { + "smithy.api#documentation": "System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemPasswordPolicy": { + "type": "structure", + "members": { + "minimumLengthRequirement": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "If the system has a password policy, what the minimum password length requirement is.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemCategory": { + "type": "enum", + "members": { + "FIREWALL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FIREWALL" + } + }, + "ANTIVIRUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ANTIVIRUS" + } + }, + "ANTISPYWARE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ANTISPYWARE" + } + } + }, + "traits": { + "smithy.api#documentation": "The category of the security product." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemState": { + "type": "enum", + "members": { + "ON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ON" + } + }, + "OFF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFF" + } + }, + "UNKNOWN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UNKNOWN" + } + } + }, + "traits": { + "smithy.api#documentation": "The state of the security product." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the security product.", + "smithy.api#required": {} + } + }, + "category": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemCategory", + "traits": { + "smithy.api#documentation": "The category of the security product.", + "smithy.api#required": {} + } + }, + "state": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemState", + "traits": { + "smithy.api#documentation": "The state of the security product.", + "smithy.api#required": {} + } + }, + "stateTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When this data was collected.", + "smithy.api#required": {} + } + }, + "signaturesUpToDate": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the security signatures are up to date.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItem" + }, + "traits": { + "smithy.api#documentation": "A list of services that are monitored by Windows Security Center (WSC)." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterFirewall": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the monitored Firewall." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAutoupdate": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the Windows Autoupdate feature." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAntivirus": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the monitored Antivirus solution." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterInternetSetting": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the Internet Settings." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterUserAccountControl": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the User Account Control (UAC) capability in Windows." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterWindowsSecurityCenterService": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the Windows Security Center Service." + } + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenter": { + "type": "structure", + "members": { + "firewall": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterFirewall", + "traits": { + "smithy.api#documentation": "The health of the monitored Firewall.", + "smithy.api#required": {} + } + }, + "autoupdate": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAutoupdate", + "traits": { + "smithy.api#documentation": "The health of the Windows Autoupdate feature.", + "smithy.api#required": {} + } + }, + "antivirus": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAntivirus", + "traits": { + "smithy.api#documentation": "The health of the monitored Antivirus solution.", + "smithy.api#required": {} + } + }, + "internetSetting": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterInternetSetting", + "traits": { + "smithy.api#documentation": "The health of the Internet Settings.", + "smithy.api#required": {} + } + }, + "userAccountControl": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterUserAccountControl", + "traits": { + "smithy.api#documentation": "The health of the User Account Control (UAC) capability in Windows.", + "smithy.api#required": {} + } + }, + "windowsSecurityCenterService": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterWindowsSecurityCenterService", + "traits": { + "smithy.api#documentation": "The health of the Windows Security Center Service.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "collectedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A timestamp that indicates when the data being sent was collected from the host computer. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field.", + "smithy.api#required": {} + } + }, + "osName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The OS name. Example: `Windows 11`.", + "smithy.api#required": {} + } + }, + "osVersion": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The OS version. Example: `Version 10.0.22621`.", + "smithy.api#required": {} + } + }, + "hardwareUuid": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The hardware UUID/UDID of the device.", + "smithy.api#required": {} + } + }, + "serialNumber": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The hardware serial number of the device.", + "smithy.api#required": {} + } + }, + "programs": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemProgramsList", + "traits": { + "smithy.api#documentation": "All the installed programs on the Windows system.", + "smithy.api#required": {} + } + }, + "browserExtensions": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemBrowserExtensionsList", + "traits": { + "smithy.api#documentation": "A list of browser extensions on this device. Used to match against known password managers to demonstrate use.", + "smithy.api#required": {} + } + }, + "drives": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemDrivesList", + "traits": { + "smithy.api#documentation": "A list of drives on this device. Used to verify encryption status.", + "smithy.api#required": {} + } + }, + "users": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemUsersList", + "traits": { + "smithy.api#documentation": "The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely.", + "smithy.api#required": {} + } + }, + "systemScreenlockPolicies": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemSystemScreenlockPoliciesList", + "traits": { + "smithy.api#documentation": "System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests.", + "smithy.api#required": {} + } + }, + "isManaged": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Is the system managed by a Mobile Device Management system.", + "smithy.api#required": {} + } + }, + "autoUpdatesEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Does the system have auto-updates enabled.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the owner of the system, if it's known." + } + }, + "passwordPolicy": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemPasswordPolicy" + }, + "lastEnrolledTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A timestamp that indicates when the host computer was last enrolled within your system. If the computer has been un-enrolled and then re-enrolled, send data for the most recent enrollment." + } + }, + "windowsSecurityProducts": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsList", + "traits": { + "smithy.api#documentation": "A list of services that are monitored by Windows Security Center (WSC)." + } + }, + "windowsSecurityCenter": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenter" + } + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#GetWindowsUserComputerResponse": { + "type": "structure", + "members": { + "resources": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponseResourcesList" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#GetWindowsUserComputer": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerRequest" + }, + "output": { + "target": "com.vanta.build_integrations#GetWindowsUserComputerResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/v1/resources/windows_user_computer", + "code": 200 + }, + "smithy.api#documentation": "List all Windows User Computers\n\nList `WindowsUserComputer` resources for the given application.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:read-resource\n```" + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemProgramsItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the application.", + "smithy.api#required": {} + } + }, + "lastOpenedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The last time the application was opened." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemProgramsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemProgramsItem" + }, + "traits": { + "smithy.api#documentation": "All the installed programs on the Windows system." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItemBrowser": { + "type": "enum", + "members": { + "CHROME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CHROME" + } + }, + "FIREFOX": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FIREFOX" + } + }, + "OPERA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OPERA" + } + }, + "SAFARI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SAFARI" + } + }, + "EDGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EDGE" + } + } + }, + "traits": { + "smithy.api#documentation": "The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItem": { + "type": "structure", + "members": { + "extensionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier of the browser extension.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the browser extension.", + "smithy.api#required": {} + } + }, + "browser": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItemBrowser", + "traits": { + "smithy.api#documentation": "The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemBrowserExtensionsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItem" + }, + "traits": { + "smithy.api#documentation": "A list of browser extensions on this device. Used to match against known password managers to demonstrate use." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemDrivesItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the drive.", + "smithy.api#required": {} + } + }, + "encrypted": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Does the drive have some sort of encryption on it.", + "smithy.api#required": {} + } + }, + "isBootVolume": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Metadata about the boot volume helps Vanta skip checking volumes that aren't relevant, like USB Drives." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemDrivesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemDrivesItem" + }, + "traits": { + "smithy.api#documentation": "A list of drives on this device. Used to verify encryption status." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockPoliciesItem": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockPoliciesItem" + }, + "traits": { + "smithy.api#documentation": "If the source system cannot easily retrieve screenlock policies, it's OK to skip this data." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockSettings": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemUsersItem": { + "type": "structure", + "members": { + "username": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The user's username. Does not have to be unique.", + "smithy.api#required": {} + } + }, + "screenlockPolicies": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList", + "traits": { + "smithy.api#documentation": "If the source system cannot easily retrieve screenlock policies, it's OK to skip this data.", + "smithy.api#required": {} + } + }, + "screenlockSettings": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockSettings", + "traits": { + "smithy.api#required": {} + } + }, + "lastLoginTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The last time the user logged in to the device, if available." + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemUsersList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemUsersItem" + }, + "traits": { + "smithy.api#documentation": "The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemSystemScreenlockPoliciesItem": { + "type": "structure", + "members": { + "requiresPassword": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "After the screenlock takes effect, does the user have to enter a password to access their device.", + "smithy.api#required": {} + } + }, + "screenSleepTimeoutMs": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The timeout in milliseconds for screenlock to trigger.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemSystemScreenlockPoliciesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemSystemScreenlockPoliciesItem" + }, + "traits": { + "smithy.api#documentation": "System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemPasswordPolicy": { + "type": "structure", + "members": { + "minimumLengthRequirement": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "If the system has a password policy, what the minimum password length requirement is.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemCategory": { + "type": "enum", + "members": { + "FIREWALL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FIREWALL" + } + }, + "ANTIVIRUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ANTIVIRUS" + } + }, + "ANTISPYWARE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ANTISPYWARE" + } + } + }, + "traits": { + "smithy.api#documentation": "The category of the security product." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemState": { + "type": "enum", + "members": { + "ON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ON" + } + }, + "OFF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFF" + } + }, + "UNKNOWN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UNKNOWN" + } + } + }, + "traits": { + "smithy.api#documentation": "The state of the security product." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the security product.", + "smithy.api#required": {} + } + }, + "category": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemCategory", + "traits": { + "smithy.api#documentation": "The category of the security product.", + "smithy.api#required": {} + } + }, + "state": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemState", + "traits": { + "smithy.api#documentation": "The state of the security product.", + "smithy.api#required": {} + } + }, + "stateTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When this data was collected.", + "smithy.api#required": {} + } + }, + "signaturesUpToDate": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the security signatures are up to date.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItem" + }, + "traits": { + "smithy.api#documentation": "A list of services that are monitored by Windows Security Center (WSC)." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterFirewall": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the monitored Firewall." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAutoupdate": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the Windows Autoupdate feature." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAntivirus": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the monitored Antivirus solution." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterInternetSetting": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the Internet Settings." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterUserAccountControl": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the User Account Control (UAC) capability in Windows." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterWindowsSecurityCenterService": { + "type": "enum", + "members": { + "GOOD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOD" + } + }, + "POOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POOR" + } + }, + "SNOOZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SNOOZED" + } + }, + "NOT_MONITORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_MONITORED" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": { + "smithy.api#documentation": "The health of the Windows Security Center Service." + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenter": { + "type": "structure", + "members": { + "firewall": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterFirewall", + "traits": { + "smithy.api#documentation": "The health of the monitored Firewall.", + "smithy.api#required": {} + } + }, + "autoupdate": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAutoupdate", + "traits": { + "smithy.api#documentation": "The health of the Windows Autoupdate feature.", + "smithy.api#required": {} + } + }, + "antivirus": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAntivirus", + "traits": { + "smithy.api#documentation": "The health of the monitored Antivirus solution.", + "smithy.api#required": {} + } + }, + "internetSetting": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterInternetSetting", + "traits": { + "smithy.api#documentation": "The health of the Internet Settings.", + "smithy.api#required": {} + } + }, + "userAccountControl": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterUserAccountControl", + "traits": { + "smithy.api#documentation": "The health of the User Account Control (UAC) capability in Windows.", + "smithy.api#required": {} + } + }, + "windowsSecurityCenterService": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterWindowsSecurityCenterService", + "traits": { + "smithy.api#documentation": "The health of the Windows Security Center Service.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItem": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A human readable label for this resource - will be shown as-is in inventory page.", + "smithy.api#required": {} + } + }, + "uniqueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A stable global identifier for this resource.", + "smithy.api#required": {} + } + }, + "externalUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A link to this resource on the partner site. This must be a HTTPS URL.", + "smithy.api#required": {} + } + }, + "collectedTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A timestamp that indicates when the data being sent was collected from the host computer. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field.", + "smithy.api#required": {} + } + }, + "osName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The OS name. Example: `Windows 11`.", + "smithy.api#required": {} + } + }, + "osVersion": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The OS version. Example: `Version 10.0.22621`.", + "smithy.api#required": {} + } + }, + "hardwareUuid": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The hardware UUID/UDID of the device.", + "smithy.api#required": {} + } + }, + "serialNumber": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The hardware serial number of the device.", + "smithy.api#required": {} + } + }, + "programs": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemProgramsList", + "traits": { + "smithy.api#documentation": "All the installed programs on the Windows system.", + "smithy.api#required": {} + } + }, + "browserExtensions": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemBrowserExtensionsList", + "traits": { + "smithy.api#documentation": "A list of browser extensions on this device. Used to match against known password managers to demonstrate use.", + "smithy.api#required": {} + } + }, + "drives": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemDrivesList", + "traits": { + "smithy.api#documentation": "A list of drives on this device. Used to verify encryption status.", + "smithy.api#required": {} + } + }, + "users": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemUsersList", + "traits": { + "smithy.api#documentation": "The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely.", + "smithy.api#required": {} + } + }, + "systemScreenlockPolicies": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemSystemScreenlockPoliciesList", + "traits": { + "smithy.api#documentation": "System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests.", + "smithy.api#required": {} + } + }, + "isManaged": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Is the system managed by a Mobile Device Management system.", + "smithy.api#required": {} + } + }, + "autoUpdatesEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Does the system have auto-updates enabled.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email address of the owner of the system, if it's known." + } + }, + "passwordPolicy": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemPasswordPolicy" + }, + "lastEnrolledTimestamp": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A timestamp that indicates when the host computer was last enrolled within your system. If the computer has been un-enrolled and then re-enrolled, send data for the most recent enrollment." + } + }, + "windowsSecurityProducts": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsList", + "traits": { + "smithy.api#documentation": "A list of services that are monitored by Windows Security Center (WSC)." + } + }, + "windowsSecurityCenter": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenter" + } + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesList": { + "type": "list", + "member": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesItem" + }, + "traits": {} + }, + "com.vanta.build_integrations#PutWindowsUserComputerRequest": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources", + "smithy.api#required": {} + } + }, + "resources": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequestResourcesList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.build_integrations#PutWindowsUserComputerResponse": { + "type": "structure", + "members": { + "success": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.build_integrations#PutWindowsUserComputer": { + "type": "operation", + "input": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerRequest" + }, + "output": { + "target": "com.vanta.build_integrations#PutWindowsUserComputerResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/v1/resources/windows_user_computer", + "code": 200 + }, + "smithy.api#documentation": "Sync all Windows User Computers\n\nTo send us data related to employee/contractor Windows computers, you send us `WindowsUserComputer` resources. This helps us determine important security properties, like whether devices have encrypted drives, have anti-virus installed or have password managers installed.\n\nThis call replaces ALL existing `WindowsUserComputer` resources for the given app and `source_id` - this is a \"state of the world\" sync. In other words, if a `WindowsUserComputer` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta.\n\n** Headers **\n```\nAuthorization: Bearer \n```\n\n** Scopes **\n```\nconnectors.self:write-resource\n```\n\n** Schema **\n\nExpand the `resources` array below for the schema of `WindowsUserComputer`." + } + }, + "com.vanta.build_integrations#BuildIntegrations": { + "type": "service", + "version": "0.0.1", + "operations": [ + { + "target": "com.vanta.build_integrations#GetApiEndpointVulnerabilityConnectors" + }, + { + "target": "com.vanta.build_integrations#PutApiEndpointVulnerabilityConnectors" + }, + { + "target": "com.vanta.build_integrations#GetBackgroundCheckConnector" + }, + { + "target": "com.vanta.build_integrations#PutBackgroundCheckConnector" + }, + { + "target": "com.vanta.build_integrations#GetCustomResource" + }, + { + "target": "com.vanta.build_integrations#PutCustomResource" + }, + { + "target": "com.vanta.build_integrations#UploadFileForDocument" + }, + { + "target": "com.vanta.build_integrations#GetMacosUserComputer" + }, + { + "target": "com.vanta.build_integrations#PutMacosUserComputer" + }, + { + "target": "com.vanta.build_integrations#GetPackageVulnerabilityConnectors" + }, + { + "target": "com.vanta.build_integrations#PutPackageVulnerabilityConnectors" + }, + { + "target": "com.vanta.build_integrations#GetSecret" + }, + { + "target": "com.vanta.build_integrations#PutSecret" + }, + { + "target": "com.vanta.build_integrations#GetSecurityTask" + }, + { + "target": "com.vanta.build_integrations#PutSecurityTask" + }, + { + "target": "com.vanta.build_integrations#GetStaticAnalysisCodeVulnerabilityConnectors" + }, + { + "target": "com.vanta.build_integrations#PutStaticAnalysisCodeVulnerabilityConnectors" + }, + { + "target": "com.vanta.build_integrations#GetUserAccount" + }, + { + "target": "com.vanta.build_integrations#PutUserAccount" + }, + { + "target": "com.vanta.build_integrations#GetUserSecurityTrainingStatus" + }, + { + "target": "com.vanta.build_integrations#PutUserSecurityTrainingStatus" + }, + { + "target": "com.vanta.build_integrations#GetVulnerableComponent" + }, + { + "target": "com.vanta.build_integrations#PutVulnerableComponent" + }, + { + "target": "com.vanta.build_integrations#GetWindowsUserComputer" + }, + { + "target": "com.vanta.build_integrations#PutWindowsUserComputer" + } + ], + "traits": { + "smithy.api#title": "Build integrations", + "smithy.api#documentation": "The API that enables syncing and viewing resources\n\n**Note for Vanta Gov (FedRAMP) customers:** Select `Vanta Gov (FedRAMP)` from the server dropdown to issue requests against `https://api.vanta-gov.com`. The OAuth token and authorization URLs shown below default to the commercial hosts — Gov customers should replace `api.vanta.com` with `api.vanta-gov.com` and `app.vanta.com` with `app.vanta-gov.com`." + } + } + } +} diff --git a/packages/vanta/.generated-specs/manage_vanta.json b/packages/vanta/.generated-specs/manage_vanta.json new file mode 100644 index 000000000..f16bbc0e5 --- /dev/null +++ b/packages/vanta/.generated-specs/manage_vanta.json @@ -0,0 +1,32349 @@ +{ + "smithy": "2.0", + "metadata": { + "suppressions": [ + { + "id": "HttpUriConflict", + "namespace": "*" + }, + { + "id": "HttpMethodSemantics", + "namespace": "*" + }, + { + "id": "UnreferencedShape", + "namespace": "*" + } + ] + }, + "shapes": { + "com.vanta.manage_vanta#ListContractsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseContract": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseContractResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Contract": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the contract.", + "smithy.api#required": {} + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Stable source-system identifier for the contract, if any.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the contract.", + "smithy.api#required": {} + } + }, + "customerTrustAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The ID of the customer trust account this contract is linked to, if any.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "executedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date this contract was executed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date this contract was created in Vanta.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseContractResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Contract" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PageInfo": { + "type": "structure", + "members": { + "endCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The cursor that points to the end of the current page, or null if there is no such cursor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "hasNextPage": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Indicates if there is another page after the current page.", + "smithy.api#required": {} + } + }, + "hasPreviousPage": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Indicates if there is a page before the current page.", + "smithy.api#required": {} + } + }, + "startCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The cursor that points to the start of the current page, or null if there is no such cursor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Provides information about the pagination of a dataset." + } + }, + "com.vanta.manage_vanta#PaginatedResponseContractResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseContractResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListContracts": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListContractsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseContract" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/contracts", + "code": 200 + }, + "smithy.api#documentation": "List contracts\n\nList contracts, paginated." + } + }, + "com.vanta.manage_vanta#UploadContractRequest": { + "type": "structure", + "members": { + "file": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The contract file to upload. Only PDF files are accepted.", + "smithy.api#required": {} + } + }, + "executedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ISO 8601 date indicating when the contract was executed." + } + }, + "accountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the customer trust account to associate with this contract." + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Stable source-system identifier used to reject duplicate contract uploads; repeats return 409. Use the upstream document or record ID when available, such as the Microsoft Graph DriveItem ID for SharePoint or the Ironclad record ID for Ironclad. If there is no source system, generate and store a durable idempotency key. Maximum 256 characters." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UploadContract": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UploadContractRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Contract" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/contracts", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Upload contract\n\nUpload a contract.\n\nRate limit: 10 requests / minute.", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#GetContractRequest": { + "type": "structure", + "members": { + "contractId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetContract": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetContractRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Contract" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/contracts/{contractId}", + "code": 200 + }, + "smithy.api#documentation": "Get contract\n\nGet a contract by ID." + } + }, + "com.vanta.manage_vanta#DeleteContractRequest": { + "type": "structure", + "members": { + "contractId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteContract": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteContractRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/contracts/{contractId}", + "code": 200 + }, + "smithy.api#documentation": "Delete contract\n\nDelete a contract by ID." + } + }, + "com.vanta.manage_vanta#ListControlsRequestFrameworkMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListControlsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "frameworkMatchesAny": { + "target": "com.vanta.manage_vanta#ListControlsRequestFrameworkMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "frameworkMatchesAny", + "smithy.api#documentation": "Includes all controls belonging to one of the provided framework values in frameworkMatchesAny." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseControl": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseControlResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Control": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's unique ID.", + "smithy.api#required": {} + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's external ID.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's name.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's description.", + "smithy.api#required": {} + } + }, + "source": { + "target": "com.vanta.manage_vanta#ControlSource", + "traits": { + "smithy.api#documentation": "The control's source, either \"VANTA\" or \"CUSTOM\".", + "smithy.api#required": {} + } + }, + "domains": { + "target": "com.vanta.manage_vanta#ControlDomainsList", + "traits": { + "smithy.api#documentation": "The security domains that the control belongs to.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "com.vanta.manage_vanta#Owner", + "traits": { + "smithy.api#documentation": "The control's owner.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "role": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's GDPR role, if the control is a GDPR control.", + "com.distilled.openapi#nullable": {} + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#ControlCustomFieldsList", + "traits": { + "smithy.api#documentation": "The control's custom field values, if control custom fields is included in your Vanta instance.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the control was created. Returns null for Vanta library controls.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "modificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the control was last modified. Returns null for Vanta library controls.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ControlSource": { + "type": "enum", + "members": { + "VANTA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Vanta" + } + }, + "CUSTOM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Custom" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ControlDomainsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The security domains that the control belongs to." + } + }, + "com.vanta.manage_vanta#Owner": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the person.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the person that is shown in product.", + "smithy.api#required": {} + } + }, + "emailAddress": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the person.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomField": { + "type": "structure", + "members": { + "label": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "value": { + "target": "com.vanta.manage_vanta#CustomFieldValue", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomFieldValueCase1List": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomFieldValue": { + "type": "union", + "members": { + "Case0": { + "target": "smithy.api#String" + }, + "Case1": { + "target": "com.vanta.manage_vanta#CustomFieldValueCase1List" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ControlCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomField" + }, + "traits": { + "smithy.api#documentation": "The control's custom field values, if control custom fields is included in your Vanta instance." + } + }, + "com.vanta.manage_vanta#PaginatedResponseControlResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Control" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseControlResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseControlResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListControls": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListControlsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseControl" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/controls", + "code": 200 + }, + "smithy.api#documentation": "List controls\n\nList controls." + } + }, + "com.vanta.manage_vanta#ControlDomain": { + "type": "enum", + "members": { + "ARTIFICIAL_AUTONOMOUS_TECHNOLOGY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ARTIFICIAL_&_AUTONOMOUS_TECHNOLOGY" + } + }, + "ASSET_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ASSET_MANAGEMENT" + } + }, + "BUSINESS_CONTINUITY_DISASTER_RECOVERY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BUSINESS_CONTINUITY_&_DISASTER_RECOVERY" + } + }, + "CAPACITY_PERFORMANCE_PLANNING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CAPACITY_&_PERFORMANCE_PLANNING" + } + }, + "CHANGE_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CHANGE_MANAGEMENT" + } + }, + "CLOUD_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CLOUD_SECURITY" + } + }, + "COMPLIANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLIANCE" + } + }, + "CONFIGURATION_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONFIGURATION_MANAGEMENT" + } + }, + "CONTINUOUS_MONITORING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTINUOUS_MONITORING" + } + }, + "CRYPTOGRAPHIC_PROTECTIONS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRYPTOGRAPHIC_PROTECTIONS" + } + }, + "DATA_CLASSIFICATION_HANDLING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DATA_CLASSIFICATION_&_HANDLING" + } + }, + "EMBEDDED_TECHNOLOGY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EMBEDDED_TECHNOLOGY" + } + }, + "ENDPOINT_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ENDPOINT_SECURITY" + } + }, + "HUMAN_RESOURCES_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HUMAN_RESOURCES_SECURITY" + } + }, + "IDENTIFICATION_AUTHENTICATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IDENTIFICATION_&_AUTHENTICATION" + } + }, + "INCIDENT_RESPONSE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCIDENT_RESPONSE" + } + }, + "INFORMATION_ASSURANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INFORMATION_ASSURANCE" + } + }, + "MAINTENANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MAINTENANCE" + } + }, + "MOBILE_DEVICE_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MOBILE_DEVICE_MANAGEMENT" + } + }, + "NETWORK_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NETWORK SECURITY" + } + }, + "PHYSICAL_ENVIRONMENTAL_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PHYSICAL_&_ENVIRONMENTAL_SECURITY" + } + }, + "PRIVACY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRIVACY" + } + }, + "PROJECT_RESOURCE_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PROJECT_&_RESOURCE MANAGEMENT" + } + }, + "RISK_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RISK_MANAGEMENT" + } + }, + "SECURE_ENGINEERING_ARCHITECTURE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURE_ENGINEERING_&_ARCHITECTURE" + } + }, + "SECURITY_AWARENESS_TRAINING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_AWARENESS_&_TRAINING" + } + }, + "SECURITY_OPERATIONS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_OPERATIONS" + } + }, + "SECURITY_PRIVACY_GOVERNANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_&_PRIVACY_GOVERNANCE" + } + }, + "TECHNOLOGY_DEVELOPMENT_ACQUISITION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TECHNOLOGY_DEVELOPMENT_&_ACQUISITION" + } + }, + "THIRD_PARTY_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "THIRD-PARTY_MANAGEMENT" + } + }, + "THREAT_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "THREAT_MANAGEMENT" + } + }, + "VULNERABILITY_PATCH_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VULNERABILITY_&_PATCH_MANAGEMENT" + } + }, + "WEB_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WEB_SECURITY" + } + }, + "ADMINISTRATIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ADMINISTRATIVE" + } + }, + "PHYSICAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PHYSICAL" + } + }, + "TECHNICAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TECHNICAL" + } + }, + "BASIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BASIC" + } + }, + "DERIVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DERIVED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#FrameworkSection": { + "type": "structure", + "members": { + "frameworkId": { + "target": "com.vanta.manage_vanta#FrameworkSectionFrameworkId", + "traits": { + "smithy.api#required": {} + } + }, + "sectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#FrameworkId": { + "type": "enum", + "members": { + "AU_E_8": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AU_E_8" + } + }, + "AWS_FTR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AWS_FTR" + } + }, + "CCPA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CCPA" + } + }, + "CIS_V8": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CIS_V8" + } + }, + "CPS_234": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CPS_234" + } + }, + "DORA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DORA" + } + }, + "FEDRAMP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FEDRAMP" + } + }, + "GDPR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GDPR" + } + }, + "HIPAA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HIPAA" + } + }, + "HITRUST_E1": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HITRUST_E1" + } + }, + "ISO_27001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_27001" + } + }, + "ISO_27001_2022": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_27001_2022" + } + }, + "ISO_27017": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_27017" + } + }, + "ISO_27018": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_27018" + } + }, + "ISO_27701": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_27701" + } + }, + "ISO_42001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_42001" + } + }, + "ISO_9001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISO_9001" + } + }, + "MSFT_SSPA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MSFT_SSPA" + } + }, + "MVSP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MVSP" + } + }, + "NIS_2D": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIS_2D" + } + }, + "NIST_171": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_171" + } + }, + "NIST_171_R3": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_171_R3" + } + }, + "NIST_53": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_53" + } + }, + "NIST_AI_RMF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_AI_RMF" + } + }, + "NIST_CSF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_CSF" + } + }, + "NIST_CSF_2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIST_CSF_2" + } + }, + "OFDSS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFDSS" + } + }, + "PCI_SAQ_A": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI_SAQ_A" + } + }, + "PCI_SAQ_A_EP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI_SAQ_A_EP" + } + }, + "PCI_SAQ_D_MERCHANT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI_SAQ_D_MERCHANT" + } + }, + "PCI_SAQ_D_SP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI_SAQ_D_SP" + } + }, + "PCI_DDS_4": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCI_DDS_4" + } + }, + "SOC_2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SOC_2" + } + }, + "SOX_ITGC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SOX_ITGC" + } + }, + "UK_CYBER_ESSENTIALS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UK_CYBER_ESSENTIALS" + } + }, + "US_DATA_PRIVACY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "US_DATA_PRIVACY" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#FrameworkSectionFrameworkId": { + "type": "union", + "members": { + "FrameworkId": { + "target": "com.vanta.manage_vanta#FrameworkId" + }, + "Case1": { + "target": "smithy.api#String" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CreateCustomControlRequestSectionsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#FrameworkSection" + }, + "traits": { + "smithy.api#documentation": "The framework sections that the control maps to." + } + }, + "com.vanta.manage_vanta#GdprRole": { + "type": "enum", + "members": { + "BOTH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BOTH" + } + }, + "CONTROLLER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTROLLER" + } + }, + "PROCESSOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PROCESSOR" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CreateCustomControlRequestCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomField" + }, + "traits": { + "smithy.api#documentation": "The control's values for custom fields." + } + }, + "com.vanta.manage_vanta#CreateCustomControlRequest": { + "type": "structure", + "members": { + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's external ID.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's name.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's description.", + "smithy.api#required": {} + } + }, + "effectiveDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The effective date of the control.", + "smithy.api#required": {} + } + }, + "domain": { + "target": "com.vanta.manage_vanta#ControlDomain", + "traits": { + "smithy.api#documentation": "The control's category.", + "smithy.api#required": {} + } + }, + "sections": { + "target": "com.vanta.manage_vanta#CreateCustomControlRequestSectionsList", + "traits": { + "smithy.api#documentation": "The framework sections that the control maps to.", + "com.distilled.openapi#nullable": {} + } + }, + "role": { + "target": "com.vanta.manage_vanta#GdprRole", + "traits": { + "smithy.api#documentation": "The GDPR role of the control, which specifies whether the data is being \"collected\" or \"processed\".\nThis field should only be included for controls that are to be mapped to the GDPR framework.", + "com.distilled.openapi#nullable": {} + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#CreateCustomControlRequestCustomFieldsList", + "traits": { + "smithy.api#documentation": "The control's values for custom fields." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateCustomControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateCustomControlRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Control" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/controls", + "code": 200 + }, + "smithy.api#documentation": "Create custom control\n\nCreate a custom control." + } + }, + "com.vanta.manage_vanta#AddControlFromLibraryRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The ID of the control to be added.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#AddControlFromLibrary": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddControlFromLibraryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Control" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/controls/add-from-library", + "code": 200 + }, + "smithy.api#documentation": "Add control from Vanta library\n\nAdd a control from the Vanta library to your organization's controls." + } + }, + "com.vanta.manage_vanta#ListDeactivatedControlsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ListDeactivatedControls": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListDeactivatedControlsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseControl" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/controls/deactivated-controls", + "code": 200 + }, + "smithy.api#documentation": "List deactivated controls\n\nList deactivated Vanta controls (previously known as the controls library)." + } + }, + "com.vanta.manage_vanta#GetControlRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ControlDetail": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's unique ID.", + "smithy.api#required": {} + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's external ID.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's name.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's description.", + "smithy.api#required": {} + } + }, + "source": { + "target": "com.vanta.manage_vanta#ControlSource", + "traits": { + "smithy.api#documentation": "The control's source, either \"VANTA\" or \"CUSTOM\".", + "smithy.api#required": {} + } + }, + "domains": { + "target": "com.vanta.manage_vanta#ControlDetailDomainsList", + "traits": { + "smithy.api#documentation": "The security domains that the control belongs to.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "com.vanta.manage_vanta#Owner", + "traits": { + "smithy.api#documentation": "The control's owner.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "role": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's GDPR role, if the control is a GDPR control.", + "com.distilled.openapi#nullable": {} + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#ControlDetailCustomFieldsList", + "traits": { + "smithy.api#documentation": "The control's custom field values, if control custom fields is included in your Vanta instance.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the control was created. Returns null for Vanta library controls.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "modificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the control was last modified. Returns null for Vanta library controls.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "numDocumentsPassing": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of passing documents that are linked to the control.", + "smithy.api#required": {} + } + }, + "numDocumentsTotal": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The total number of documents that are linked to the control.", + "smithy.api#required": {} + } + }, + "numTestsPassing": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of passing tests that are linked to the control.", + "smithy.api#required": {} + } + }, + "numTestsTotal": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The total number of tests that are linked to the control.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#ControlStatus", + "traits": { + "smithy.api#documentation": "The status of the control as determined by number of passing tests and documents.", + "smithy.api#required": {} + } + }, + "note": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A user created note for the control.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ControlDetailDomainsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The security domains that the control belongs to." + } + }, + "com.vanta.manage_vanta#ControlDetailCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomField" + }, + "traits": { + "smithy.api#documentation": "The control's custom field values, if control custom fields is included in your Vanta instance." + } + }, + "com.vanta.manage_vanta#ControlStatus": { + "type": "enum", + "members": { + "NO_EVIDENCE_MAPPED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NO_EVIDENCE_MAPPED" + } + }, + "NOT_STARTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_STARTED" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "COMPLETED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetControlRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ControlDetail" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/controls/{controlId}", + "code": 200 + }, + "smithy.api#documentation": "Get control by an ID\n\nGet a control by an ID." + } + }, + "com.vanta.manage_vanta#UpdateControlMetadataRequestCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomField" + }, + "traits": { + "smithy.api#documentation": "The control's new values for custom fields." + } + }, + "com.vanta.manage_vanta#UpdateControlMetadataRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A new name for the control." + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The new external ID for the control." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The new description for the control." + } + }, + "domain": { + "target": "com.vanta.manage_vanta#ControlDomain", + "traits": { + "smithy.api#documentation": "The new category for the control." + } + }, + "note": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The new note for the control." + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#UpdateControlMetadataRequestCustomFieldsList", + "traits": { + "smithy.api#documentation": "The control's new values for custom fields." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateControlMetadata": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateControlMetadataRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ControlDetail" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/controls/{controlId}", + "code": 200 + }, + "smithy.api#documentation": "Update a control's metadata\n\nUpdate a control's metadata." + } + }, + "com.vanta.manage_vanta#DeleteControlRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteControlRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/controls/{controlId}", + "code": 200 + }, + "smithy.api#documentation": "Deactivates a control\n\nDeactivates a custom or Vanta control." + } + }, + "com.vanta.manage_vanta#AddDocumentToControlRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The ID of the document to add to the control.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#Document": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's unique ID.", + "smithy.api#required": {} + } + }, + "ownerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The user ID of the document's owner.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "category": { + "target": "com.vanta.manage_vanta#DocumentAndTestCategory", + "traits": { + "smithy.api#documentation": "The document's category.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's description.", + "smithy.api#required": {} + } + }, + "isSensitive": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Determines whether or not the document is sensitive.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's title.", + "smithy.api#required": {} + } + }, + "uploadStatus": { + "target": "com.vanta.manage_vanta#DocumentStatus", + "traits": { + "smithy.api#documentation": "The document's status.", + "smithy.api#required": {} + } + }, + "uploadStatusDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the document's uploadStatus changed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The URL to view the document within Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DocumentAndTestCategory": { + "type": "enum", + "members": { + "ACCOUNTS_ACCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Accounts access" + } + }, + "ACCOUNT_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Account security" + } + }, + "ACCOUNT_SETUP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Account setup" + } + }, + "COMPUTERS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Computers" + } + }, + "CUSTOM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Custom" + } + }, + "DATA_STORAGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Data storage" + } + }, + "EMPLOYEES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Employees" + } + }, + "INFRASTRUCTURE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Infrastructure" + } + }, + "IT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IT" + } + }, + "LOGGING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Logging" + } + }, + "MONITORING_ALERTS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Monitoring alerts" + } + }, + "PEOPLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "People" + } + }, + "POLICIES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Policies" + } + }, + "RISK_ANALYSIS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Risk analysis" + } + }, + "SOFTWARE_DEVELOPMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Software development" + } + }, + "CSPM_ALERT_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CSPM alert management" + } + }, + "VENDORS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Vendors" + } + }, + "VULNERABILITY_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Vulnerability management" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DocumentStatus": { + "type": "enum", + "members": { + "NEEDS_DOCUMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Needs document" + } + }, + "NEEDS_UPDATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Needs update" + } + }, + "NOT_RELEVANT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Not relevant" + } + }, + "OK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OK" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AddDocumentToControlResponse": { + "type": "structure", + "members": { + "document": { + "target": "com.vanta.manage_vanta#Document", + "traits": { + "smithy.api#required": {} + } + }, + "control": { + "target": "com.vanta.manage_vanta#Control", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.manage_vanta#AddDocumentToControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddDocumentToControlRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#AddDocumentToControlResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/controls/{controlId}/add-document-to-control", + "code": 200 + }, + "smithy.api#documentation": "Add control to document mapping\n\nAdd a document to a control." + } + }, + "com.vanta.manage_vanta#AddTestToControlRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "testId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The ID of the test to add to the control.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#Test": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The test's unique ID.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The test's name.", + "smithy.api#required": {} + } + }, + "lastTestRunDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The timestamp of the last test run.", + "smithy.api#required": {} + } + }, + "latestFlipDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The most recent date when the test flipped.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The test's description.", + "smithy.api#required": {} + } + }, + "failureDescription": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The test's failure description.", + "smithy.api#required": {} + } + }, + "remediationDescription": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The test's remediation description.", + "smithy.api#required": {} + } + }, + "version": { + "target": "com.vanta.manage_vanta#TestVersion", + "traits": { + "smithy.api#documentation": "The test's version.", + "smithy.api#required": {} + } + }, + "category": { + "target": "com.vanta.manage_vanta#DocumentAndTestCategory", + "traits": { + "smithy.api#documentation": "The test's category.", + "smithy.api#required": {} + } + }, + "integrations": { + "target": "com.vanta.manage_vanta#TestIntegrationsList", + "traits": { + "smithy.api#documentation": "This test's third-party integration dependencies.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#TestStatus", + "traits": { + "smithy.api#documentation": "This test run's status.", + "smithy.api#required": {} + } + }, + "deactivatedStatusInfo": { + "target": "com.vanta.manage_vanta#DeactivatedStatusInfo", + "traits": { + "smithy.api#documentation": "The test's deactivation status.", + "smithy.api#required": {} + } + }, + "remediationStatusInfo": { + "target": "com.vanta.manage_vanta#RemediationStatusInfo", + "traits": { + "smithy.api#documentation": "The test's remediation status.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "com.vanta.manage_vanta#Owner", + "traits": { + "smithy.api#documentation": "The test's owner.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TestVersion": { + "type": "structure", + "members": { + "minor": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The minor version number.", + "smithy.api#required": {} + } + }, + "major": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The major version number.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The test's version." + } + }, + "com.vanta.manage_vanta#TestIntegrationsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "This test's third-party integration dependencies." + } + }, + "com.vanta.manage_vanta#TestStatus": { + "type": "enum", + "members": { + "OK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OK" + } + }, + "DEACTIVATED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DEACTIVATED" + } + }, + "NEEDS_ATTENTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NEEDS_ATTENTION" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "INVALID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INVALID" + } + }, + "NOT_APPLICABLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_APPLICABLE" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DeactivatedStatusInfo": { + "type": "structure", + "members": { + "isDeactivated": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "The deactivated status of the test.", + "smithy.api#required": {} + } + }, + "deactivatedReason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The reason for deactivation.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "lastUpdatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date of the last update to the deactivated status.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#RemediationStatusInfo": { + "type": "structure", + "members": { + "status": { + "target": "com.vanta.manage_vanta#TestRemediationStatus", + "traits": { + "smithy.api#documentation": "The status of the remediation.", + "smithy.api#required": {} + } + }, + "soonestRemediateByDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The soonest date by which the remediation should be completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "itemCount": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of items that need remediation.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TestRemediationStatus": { + "type": "enum", + "members": { + "DISABLED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DISABLED" + } + }, + "DUE_SOON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DUE_SOON" + } + }, + "INVALID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INVALID" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "NA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NA" + } + }, + "NEEDS_WORK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NEEDS_WORK" + } + }, + "OVERDUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OVERDUE" + } + }, + "PASS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PASS" + } + } + }, + "traits": { + "smithy.api#documentation": "Enum for the possible test remediation statuses" + } + }, + "com.vanta.manage_vanta#AddTestToControlResponse": { + "type": "structure", + "members": { + "test": { + "target": "com.vanta.manage_vanta#Test", + "traits": { + "smithy.api#required": {} + } + }, + "control": { + "target": "com.vanta.manage_vanta#Control", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.manage_vanta#AddTestToControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddTestToControlRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#AddTestToControlResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/controls/{controlId}/add-test-to-control", + "code": 200 + }, + "smithy.api#documentation": "Add control to test mapping\n\nAdd a control to test mapping." + } + }, + "com.vanta.manage_vanta#ListDocumentsForControlRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseDocument": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseDocumentResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseDocumentResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Document" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseDocumentResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseDocumentResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListDocumentsForControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListDocumentsForControlRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseDocument" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/controls/{controlId}/documents", + "code": 200 + }, + "smithy.api#documentation": "List a control's documents\n\nList a control's documents." + } + }, + "com.vanta.manage_vanta#DeleteDocumentForcontrolRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteDocumentForcontrol": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteDocumentForcontrolRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/controls/{controlId}/documents/{documentId}", + "code": 200 + }, + "smithy.api#documentation": "Remove control from document mapping\n\nRemove a document by ID from a control." + } + }, + "com.vanta.manage_vanta#SetOwnerForControlRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "userId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The new owner's ID.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#SetOwnerForControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#SetOwnerForControlRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Control" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/controls/{controlId}/set-owner", + "code": 200 + }, + "smithy.api#documentation": "Set owner of a control\n\nAssign a control to a user or remove an owner from a control." + } + }, + "com.vanta.manage_vanta#ListTestsForControlRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTest": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTestResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTestResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Test" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTestResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTestResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTestsForControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTestsForControlRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTest" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/controls/{controlId}/tests", + "code": 200 + }, + "smithy.api#documentation": "List a control's tests\n\nList a control's tests." + } + }, + "com.vanta.manage_vanta#DeleteTestForControlRequest": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "testId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTestForControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTestForControlRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/controls/{controlId}/tests/{testId}", + "code": 200 + }, + "smithy.api#documentation": "Remove control from test mapping\n\nRemove a control from test mapping." + } + }, + "com.vanta.manage_vanta#ListCustomerTrustAccountsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "searchString": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "searchString" + } + }, + "isAutoApprovalEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "isAutoApprovalEnabled" + } + }, + "customFieldsFilter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "customFieldsFilter" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseCustomerTrustAccountVantaApi": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseCustomerTrustAccountVantaApiResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustAccountVantaApi": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the account", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the account", + "smithy.api#required": {} + } + }, + "emailDomain": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Primary email domain associated with the account", + "smithy.api#required": {} + } + }, + "createdDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the account was created", + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the account was last updated", + "smithy.api#required": {} + } + }, + "ndaDetails": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountNDADetails", + "traits": { + "smithy.api#documentation": "NDA configuration for this account", + "smithy.api#required": {} + } + }, + "accessConfig": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountAccessConfig", + "traits": { + "smithy.api#documentation": "Access configuration for this account", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountVantaApiCustomFieldsList", + "traits": { + "smithy.api#documentation": "Custom field values for this account", + "smithy.api#required": {} + } + }, + "tagsByCategory": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountVantaApiTagsByCategoryList", + "traits": { + "smithy.api#documentation": "Tags assigned to this account, grouped by category", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Vanta API representation of a CustomerTrustAccount." + } + }, + "com.vanta.manage_vanta#CustomerTrustAccountNDADetails": { + "type": "structure", + "members": { + "ndaStatus": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountNdaStatus", + "traits": { + "smithy.api#documentation": "The status of the NDA for this account", + "smithy.api#required": {} + } + }, + "ndaSatisfiedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date and time the NDA was satisfied", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustAccountNdaStatus": { + "type": "enum", + "members": { + "SIGNED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SIGNED" + } + }, + "NOT_REQUIRED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_REQUIRED" + } + }, + "INCOMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCOMPLETE" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustAccountAccessConfig": { + "type": "structure", + "members": { + "autoApprovalEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether access requests matching this account's email domain should be auto-approved", + "smithy.api#required": {} + } + }, + "grantAccessOption": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountGrantAccessOption", + "traits": { + "smithy.api#documentation": "How to grant resource access for auto-approved requests", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustAccountGrantAccessOption": { + "type": "enum", + "members": { + "INCLUDE_EVERYTHING_REQUESTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCLUDE_EVERYTHING_REQUESTED" + } + }, + "INCLUDE_ONLY_CONFIGURED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCLUDE_ONLY_CONFIGURED" + } + } + }, + "traits": { + "smithy.api#documentation": "How a CustomerTrustAccount determines which resources to grant its viewers access to." + } + }, + "com.vanta.manage_vanta#CustomerTrustAccountVantaApiCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomField" + }, + "traits": { + "smithy.api#documentation": "Custom field values for this account" + } + }, + "com.vanta.manage_vanta#TagsByCategoryOutput": { + "type": "structure", + "members": { + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The tag category ID", + "smithy.api#required": {} + } + }, + "tagIds": { + "target": "com.vanta.manage_vanta#TagsByCategoryOutputTagIdsList", + "traits": { + "smithy.api#documentation": "Tag IDs assigned in this category", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TagsByCategoryOutputTagIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Tag IDs assigned in this category" + } + }, + "com.vanta.manage_vanta#CustomerTrustAccountVantaApiTagsByCategoryList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagsByCategoryOutput" + }, + "traits": { + "smithy.api#documentation": "Tags assigned to this account, grouped by category" + } + }, + "com.vanta.manage_vanta#PaginatedResponseCustomerTrustAccountVantaApiResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountVantaApi" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseCustomerTrustAccountVantaApiResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseCustomerTrustAccountVantaApiResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListCustomerTrustAccounts": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListCustomerTrustAccountsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseCustomerTrustAccountVantaApi" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/customer-trust/accounts", + "code": 200 + }, + "smithy.api#documentation": "List customer trust accounts\n\nList customer trust accounts with pagination." + } + }, + "com.vanta.manage_vanta#CustomerTrustAccountNDADetailsInput": { + "type": "structure", + "members": { + "markNdaNotRequired": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether NDA requirement should be bypassed for access requests matching this account", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustAccountAccessConfigInput": { + "type": "structure", + "members": { + "autoApprovalEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether access requests matching this account's email domain should be auto-approved", + "smithy.api#required": {} + } + }, + "grantAccessOption": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountGrantAccessOption", + "traits": { + "smithy.api#documentation": "How to grant resource access for auto-approved requests. Must be specified if autoApprovalEnabled is true", + "com.distilled.openapi#nullable": {} + } + }, + "tagsByCategory": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountAccessConfigInputTagsByCategoryList", + "traits": { + "smithy.api#documentation": "Tags to assign to this account, grouped by category." + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TagsByCategoryInput": { + "type": "structure", + "members": { + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The tag category ID", + "smithy.api#required": {} + } + }, + "tagIds": { + "target": "com.vanta.manage_vanta#TagsByCategoryInputTagIdsList", + "traits": { + "smithy.api#documentation": "Tag IDs to assign. An empty array removes all tags for the category.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TagsByCategoryInputTagIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Tag IDs to assign. An empty array removes all tags for the category." + } + }, + "com.vanta.manage_vanta#CustomerTrustAccountAccessConfigInputTagsByCategoryList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagsByCategoryInput" + }, + "traits": { + "smithy.api#documentation": "Tags to assign to this account, grouped by category." + } + }, + "com.vanta.manage_vanta#CreateCustomerTrustAccountRequestCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomField" + }, + "traits": {} + }, + "com.vanta.manage_vanta#CreateCustomerTrustAccountRequestTagsByCategoryList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagsByCategoryInput" + }, + "traits": { + "smithy.api#documentation": "Tags to assign to this account, grouped by category" + } + }, + "com.vanta.manage_vanta#CreateCustomerTrustAccountRequest": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "emailDomain": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "ndaDetails": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountNDADetailsInput" + }, + "accessConfig": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountAccessConfigInput" + }, + "customFields": { + "target": "com.vanta.manage_vanta#CreateCustomerTrustAccountRequestCustomFieldsList" + }, + "tagsByCategory": { + "target": "com.vanta.manage_vanta#CreateCustomerTrustAccountRequestTagsByCategoryList", + "traits": { + "smithy.api#documentation": "Tags to assign to this account, grouped by category" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateCustomerTrustAccount": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateCustomerTrustAccountRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountVantaApi" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/customer-trust/accounts", + "code": 200 + }, + "smithy.api#documentation": "Create customer trust account\n\nCreate a new customer trust account." + } + }, + "com.vanta.manage_vanta#GetCustomerTrustAccountRequest": { + "type": "structure", + "members": { + "accountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetCustomerTrustAccount": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetCustomerTrustAccountRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountVantaApi" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/customer-trust/accounts/{accountId}", + "code": 200 + }, + "smithy.api#documentation": "Get customer trust account\n\nGet a specific customer trust account by ID." + } + }, + "com.vanta.manage_vanta#UpdateCustomerTrustAccountRequestCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomField" + }, + "traits": { + "smithy.api#documentation": "Updated custom field values for the account" + } + }, + "com.vanta.manage_vanta#UpdateCustomerTrustAccountRequestTagsByCategoryList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagsByCategoryInput" + }, + "traits": { + "smithy.api#documentation": "Tags to assign to this account, grouped by category. Replaces existing tags per category." + } + }, + "com.vanta.manage_vanta#UpdateCustomerTrustAccountRequest": { + "type": "structure", + "members": { + "accountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Updated name for the account" + } + }, + "emailDomain": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Updated primary email domain for the account" + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#UpdateCustomerTrustAccountRequestCustomFieldsList", + "traits": { + "smithy.api#documentation": "Updated custom field values for the account" + } + }, + "tagsByCategory": { + "target": "com.vanta.manage_vanta#UpdateCustomerTrustAccountRequestTagsByCategoryList", + "traits": { + "smithy.api#documentation": "Tags to assign to this account, grouped by category. Replaces existing tags per category." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateCustomerTrustAccount": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateCustomerTrustAccountRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountVantaApi" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/customer-trust/accounts/{accountId}", + "code": 200 + }, + "smithy.api#documentation": "Update customer trust account\n\nUpdate a customer trust account by ID." + } + }, + "com.vanta.manage_vanta#DeleteCustomerTrustAccountRequest": { + "type": "structure", + "members": { + "accountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteCustomerTrustAccount": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteCustomerTrustAccountRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/customer-trust/accounts/{accountId}", + "code": 200 + }, + "smithy.api#documentation": "Delete customer trust account\n\nDelete a customer trust account by ID." + } + }, + "com.vanta.manage_vanta#CreateDeletionRequestRequest": { + "type": "structure", + "members": { + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the individual requesting data deletion.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateDeletionRequestResponse": { + "type": "structure", + "members": { + "isSuccessful": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the deletion request was successfully enqueued.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Response returned after a data deletion request is created." + } + }, + "com.vanta.manage_vanta#CreateDeletionRequest": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateDeletionRequestRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CreateDeletionRequestResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/customer-trust/deletion-requests", + "code": 200 + }, + "smithy.api#documentation": "Create data deletion request\n\nSubmit a Right to Be Forgotten (RTBF) data deletion request for the specified email address." + } + }, + "com.vanta.manage_vanta#QuestionnaireStatus": { + "type": "enum", + "members": { + "APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPROVED" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "IN_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_REVIEW" + } + }, + "READY_FOR_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_REVIEW" + } + }, + "WAITING_ON_ANSWERS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WAITING_ON_ANSWERS" + } + }, + "ON_HOLD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ON_HOLD" + } + }, + "NO_LONGER_NEEDED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NO_LONGER_NEEDED" + } + }, + "COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + }, + "EXTRACTING_QUESTIONS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXTRACTING_QUESTIONS" + } + }, + "EXTRACTING_SECTIONS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXTRACTING_SECTIONS" + } + }, + "MAPPING_SECTIONS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MAPPING_SECTIONS" + } + }, + "GENERATING_ANSWERS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GENERATING_ANSWERS" + } + }, + "QUEUED_FOR_EXTRACTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QUEUED_FOR_EXTRACTION" + } + }, + "PROCESSING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PROCESSING" + } + }, + "QUEUED_FOR_PROCESSING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QUEUED_FOR_PROCESSING" + } + }, + "WAITING_ON_COLUMN_SELECTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WAITING_ON_COLUMN_SELECTION" + } + }, + "WAITING_ON_COLUMN_APPROVAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WAITING_ON_COLUMN_APPROVAL" + } + }, + "QUEUED_FOR_COLUMN_DETECTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QUEUED_FOR_COLUMN_DETECTION" + } + }, + "DETECTING_COLUMNS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DETECTING_COLUMNS" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListQuestionnairesRequestStatusMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#QuestionnaireStatus" + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustQuestionnaireType": { + "type": "enum", + "members": { + "SPREADSHEET": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SPREADSHEET" + } + }, + "WEBSITE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WEBSITE" + } + }, + "DOCUMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DOCUMENT" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListQuestionnairesRequestTypeMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaireType" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListQuestionnairesRequestOwnerIdMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListQuestionnairesRequestApproverIdMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListQuestionnairesRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "q": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "q", + "smithy.api#documentation": "Filter questionnaires by display name (case-insensitive, partial match)." + } + }, + "statusMatchesAny": { + "target": "com.vanta.manage_vanta#ListQuestionnairesRequestStatusMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "statusMatchesAny", + "smithy.api#documentation": "Filter questionnaires matching any of the provided statuses." + } + }, + "typeMatchesAny": { + "target": "com.vanta.manage_vanta#ListQuestionnairesRequestTypeMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "typeMatchesAny", + "smithy.api#documentation": "Filter questionnaires matching any of the provided types." + } + }, + "createdAfter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "createdAfter", + "smithy.api#documentation": "Filter to questionnaires created after this date (ISO 8601 string)." + } + }, + "createdBefore": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "createdBefore", + "smithy.api#documentation": "Filter to questionnaires created before this date (ISO 8601 string)." + } + }, + "ownerIdMatchesAny": { + "target": "com.vanta.manage_vanta#ListQuestionnairesRequestOwnerIdMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "ownerIdMatchesAny", + "smithy.api#documentation": "Filter to questionnaires owned by any of the provided user IDs." + } + }, + "approverIdMatchesAny": { + "target": "com.vanta.manage_vanta#ListQuestionnairesRequestApproverIdMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "approverIdMatchesAny", + "smithy.api#documentation": "Filter to questionnaires with an approver matching any of the provided user IDs." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseCustomerTrustQuestionnaire": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseCustomerTrustQuestionnaireResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustQuestionnaire": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String" + }, + "type": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaireType", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#QuestionnaireStatus", + "traits": { + "smithy.api#required": {} + } + }, + "statusLog": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaireStatusLogList", + "traits": { + "smithy.api#documentation": "The status change history log for the questionnaire.\nEntries are ordered by the most recent status change first.", + "smithy.api#required": {} + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#ActorAssignment", + "traits": { + "smithy.api#documentation": "The owner assignment in actor form (User or Team)." + } + }, + "approverAssignment": { + "target": "com.vanta.manage_vanta#ActorAssignment", + "traits": { + "smithy.api#documentation": "The approver assignment in actor form (User or Team)." + } + }, + "customerTrustAccountId": { + "target": "smithy.api#String" + }, + "dueDate": { + "target": "smithy.api#String" + }, + "metadata": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaireMetadataList" + }, + "tagAndCategoryIds": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaireTagAndCategoryIdsList", + "traits": { + "smithy.api#documentation": "Tags assigned to this questionnaire. Each entry contains a categoryId and tagId.", + "smithy.api#required": {} + } + }, + "createdDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "completedDate": { + "target": "smithy.api#String" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireStatusChangeEntry": { + "type": "structure", + "members": { + "updatedBy": { + "target": "com.vanta.manage_vanta#QuestionnaireUser", + "traits": { + "smithy.api#documentation": "The user who made the status change", + "smithy.api#required": {} + } + }, + "updatedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date and time when the status was changed", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#QuestionnaireStatus", + "traits": { + "smithy.api#documentation": "The new status of the questionnaire", + "smithy.api#required": {} + } + }, + "message": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "An optional message associated with the status change", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireUser": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustQuestionnaireStatusLogList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#QuestionnaireStatusChangeEntry" + }, + "traits": { + "smithy.api#documentation": "The status change history log for the questionnaire.\nEntries are ordered by the most recent status change first." + } + }, + "com.vanta.manage_vanta#ActorAssignment": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#ActorAssignmentType", + "traits": { + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ActorAssignmentType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "User" + } + }, + "TEAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Team" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustQuestionnaireMetadataItem": { + "type": "structure", + "members": { + "value": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "key": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustQuestionnaireMetadataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaireMetadataItem" + }, + "traits": {} + }, + "com.vanta.manage_vanta#TagInput": { + "type": "structure", + "members": { + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "tagId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustQuestionnaireTagAndCategoryIdsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": { + "smithy.api#documentation": "Tags assigned to this questionnaire. Each entry contains a categoryId and tagId." + } + }, + "com.vanta.manage_vanta#PaginatedResponseCustomerTrustQuestionnaireResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaire" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseCustomerTrustQuestionnaireResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseCustomerTrustQuestionnaireResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListQuestionnaires": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListQuestionnairesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseCustomerTrustQuestionnaire" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/customer-trust/questionnaires", + "code": 200 + }, + "smithy.api#documentation": "List questionnaires\n\nList questionnaires with filtering and pagination." + } + }, + "com.vanta.manage_vanta#QuestionnaireAssignableUserRole": { + "type": "enum", + "members": { + "OWNER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "owner" + } + }, + "APPROVER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "approver" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListAssignableUsersRequest": { + "type": "structure", + "members": { + "role": { + "target": "com.vanta.manage_vanta#QuestionnaireAssignableUserRole", + "traits": { + "smithy.api#httpQuery": "role", + "smithy.api#documentation": "Filter by role: \"owner\" or \"approver\"." + } + }, + "q": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "q", + "smithy.api#documentation": "Optional search string to filter users by name or email." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#QuestionnaireAssignableUsersResponse": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#QuestionnaireAssignableUsersResponseResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireAssignableUser": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireAssignableUsersResponseResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#QuestionnaireAssignableUser" + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireAssignableUsersResponseResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#QuestionnaireAssignableUsersResponseResultsDataList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListAssignableUsers": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListAssignableUsersRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#QuestionnaireAssignableUsersResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/customer-trust/questionnaires/assignable-users", + "code": 200 + }, + "smithy.api#documentation": "List assignable users\n\nList users who can be assigned as owner or approver on a questionnaire.\n\nWhen a role is specified, results are filtered to users with that role's required permission.\nWhen omitted, users assignable to either role are returned.\nResults can optionally be narrowed by a search string." + } + }, + "com.vanta.manage_vanta#CreateQuestionnaireExportRequestFormat": { + "type": "enum", + "members": { + "ORIGINAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "original" + } + }, + "CSV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "csv" + } + } + }, + "traits": { + "smithy.api#documentation": "The output format for the exported questionnaire.\n- `\"original\"`: Exports in the questionnaire's native format (XLSX for spreadsheets, DOCX for documents).\n- `\"csv\"`: Exports as a CSV file, suitable for data analysis or import into other systems." + } + }, + "com.vanta.manage_vanta#CreateQuestionnaireExportRequest": { + "type": "structure", + "members": { + "questionnaireId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the questionnaire to trigger an export for.", + "smithy.api#required": {} + } + }, + "format": { + "target": "com.vanta.manage_vanta#CreateQuestionnaireExportRequestFormat", + "traits": { + "smithy.api#documentation": "The output format for the exported questionnaire.\n- `\"original\"`: Exports in the questionnaire's native format (XLSX for spreadsheets, DOCX for documents).\n- `\"csv\"`: Exports as a CSV file, suitable for data analysis or import into other systems.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateQuestionnaireExport": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateQuestionnaireExportRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/customer-trust/questionnaires/exports", + "code": 200 + }, + "smithy.api#documentation": "Create questionnaire export\n\nCreates an asynchronous export job for a questionnaire. The export processes in the background\nand typically completes within a few minutes depending on questionnaire size.\n\nSubscribe to the `v1.questionnaire.export-completed` and `v1.questionnaire.export-failed` webhook events to be notified when an export completes or fails.\nUse the returned `id` with the \"getQuestionnaireExport\" endpoint to retrieve the download URL once the export completes." + } + }, + "com.vanta.manage_vanta#GetQuestionnaireExportRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "The unique identifier of the export job, returned from the POST endpoint." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CustomerTrustExportStatusResponse": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the export job.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#CustomerTrustExportStatusResponseStatus", + "traits": { + "smithy.api#documentation": "Processing status of the export.\n- `\"pending\"`: Export is still being processed.\n- `\"completed\"`: Export finished successfully. Download URL is available.\n- `\"failed\"`: Export failed. See `errorMessage` for details.", + "smithy.api#required": {} + } + }, + "format": { + "target": "com.vanta.manage_vanta#CustomerTrustExportStatusResponseFormat", + "traits": { + "smithy.api#documentation": "The output format of the exported file.", + "smithy.api#required": {} + } + }, + "requestedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ISO 8601 timestamp indicating when the export was requested.", + "smithy.api#required": {} + } + }, + "completedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ISO 8601 timestamp indicating when the export completed successfully.\nOnly present when `status` is `\"completed\"`." + } + }, + "downloadUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Pre-signed URL for downloading the exported file. Valid for 24 hours from the time of this response.\nOnly present when `status` is `\"completed\"`." + } + }, + "expiresAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ISO 8601 timestamp indicating when the download URL expires. After this time, request a new export.\nOnly present when `status` is `\"completed\"`." + } + }, + "failedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ISO 8601 timestamp indicating when the export failed.\nOnly present when `status` is `\"failed\"`." + } + }, + "errorMessage": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Human-readable description of why the export failed.\nOnly present when `status` is `\"failed\"`." + } + } + }, + "traits": { + "smithy.api#documentation": "Detailed status and result of a questionnaire export.\nWhen `status` is `\"completed\"`, the response includes a time-limited download URL." + } + }, + "com.vanta.manage_vanta#CustomerTrustExportStatusResponseStatus": { + "type": "enum", + "members": { + "PENDING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pending" + } + }, + "COMPLETED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "completed" + } + }, + "FAILED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "failed" + } + } + }, + "traits": { + "smithy.api#documentation": "Processing status of the export.\n- `\"pending\"`: Export is still being processed.\n- `\"completed\"`: Export finished successfully. Download URL is available.\n- `\"failed\"`: Export failed. See `errorMessage` for details." + } + }, + "com.vanta.manage_vanta#CustomerTrustExportStatusResponseFormat": { + "type": "enum", + "members": { + "ORIGINAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "original" + } + }, + "CSV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "csv" + } + } + }, + "traits": { + "smithy.api#documentation": "The output format of the exported file." + } + }, + "com.vanta.manage_vanta#GetQuestionnaireExport": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetQuestionnaireExportRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CustomerTrustExportStatusResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/customer-trust/questionnaires/exports/{id}", + "code": 200 + }, + "smithy.api#documentation": "Get questionnaire export status\n\nRetrieves the current status and result of a questionnaire export using the id received from either the `createQuestionnaireExport` endpoint or the `v1.questionnaire.export-completed` webhook payload.\n\nThis endpoint utilizes a dynamic response schema that changes based on the value of the status field:\n\n - pending: The export is currently in the queue or processing. Only base metadata is returned.\n - completed: The export finished successfully. The response expands to include completedAt and a downloadUrl. This pre-signed URL is valid for 24 hours; if it expires, simply call this endpoint again to retrieve a fresh, active link.\n - failed: The process encountered an error. The response expands to include failedAt and an errorMessage detailing the reason for failure.\n\nDevelopers should first check the status string before attempting to access result-specific fields like downloadUrl or errorMessage." + } + }, + "com.vanta.manage_vanta#CreateFileQuestionnaireRequest": { + "type": "structure", + "members": { + "file": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name for the questionnaire.", + "smithy.api#required": {} + } + }, + "ownerAssignment": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Owner to assign, as a JSON string: {\"type\": \"User\" | \"Team\", \"id\": \"\"}." + } + }, + "approverAssignment": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Approver to assign, as a JSON string: {\"type\": \"User\" | \"Team\", \"id\": \"\"}." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the questionnaire." + } + }, + "companyUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "URL of the company associated with this questionnaire." + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Due date for questionnaire completion." + } + }, + "customerTrustAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the customer trust account to associate with this questionnaire." + } + }, + "includeUntaggedEntitiesForCategoryIds": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Comma-separated category IDs for which to include untagged entities." + } + }, + "metadata": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Custom key-value pairs, as a JSON string array: [{\"key\": \"\", \"value\": \"\"}]. Keys and values may contain alphanumeric characters, hyphens, underscores, and periods." + } + }, + "tagAndCategoryIds": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Tags to assign, as a JSON string array: [{\"categoryId\": \"\", \"tagId\": \"\"}]. Replaces all existing tags." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateFileQuestionnaire": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateFileQuestionnaireRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaire" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/customer-trust/questionnaires/file", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Create file questionnaire\n\nCreate a new file-based questionnaire from an uploaded file (.xlsx, .docx, .pdf). File type is inferred as `SPREADSHEET` or `DOCUMENT` based on the uploaded file.", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#ActorAssignmentInput": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#ActorAssignmentInputType", + "traits": { + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ActorAssignmentInputType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "User" + } + }, + "TEAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Team" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireMetadata": { + "type": "structure", + "members": { + "key": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "value": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CreateWebsiteQuestionnaireRequestMetadataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#QuestionnaireMetadata" + }, + "traits": { + "smithy.api#documentation": "Custom key-value pairs. Keys and values may contain alphanumeric characters, hyphens, underscores, and periods. Maximum 30 entries." + } + }, + "com.vanta.manage_vanta#CreateWebsiteQuestionnaireRequestIncludeUntaggedEntitiesForCategoryIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Category IDs for which to include untagged entities." + } + }, + "com.vanta.manage_vanta#CreateWebsiteQuestionnaireRequestTagAndCategoryIdsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": { + "smithy.api#documentation": "Tags to assign to the questionnaire. Each entry must include a categoryId and tagId. Replaces all existing tags." + } + }, + "com.vanta.manage_vanta#CreateWebsiteQuestionnaireRequest": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name for the questionnaire.", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The portal URL to create the questionnaire from.", + "smithy.api#required": {} + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#ActorAssignmentInput", + "traits": { + "smithy.api#documentation": "Actor to assign as the owner (user or team)." + } + }, + "approverAssignment": { + "target": "com.vanta.manage_vanta#ActorAssignmentInput", + "traits": { + "smithy.api#documentation": "Actor to assign as the approver (user or team)." + } + }, + "companyUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "URL of the company associated with this questionnaire." + } + }, + "customerTrustAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the customer trust account to associate with this questionnaire." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the questionnaire." + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Due date for questionnaire completion (ISO 8601)." + } + }, + "metadata": { + "target": "com.vanta.manage_vanta#CreateWebsiteQuestionnaireRequestMetadataList", + "traits": { + "smithy.api#documentation": "Custom key-value pairs. Keys and values may contain alphanumeric characters, hyphens, underscores, and periods. Maximum 30 entries." + } + }, + "includeUntaggedEntitiesForCategoryIds": { + "target": "com.vanta.manage_vanta#CreateWebsiteQuestionnaireRequestIncludeUntaggedEntitiesForCategoryIdsList", + "traits": { + "smithy.api#documentation": "Category IDs for which to include untagged entities." + } + }, + "tagAndCategoryIds": { + "target": "com.vanta.manage_vanta#CreateWebsiteQuestionnaireRequestTagAndCategoryIdsList", + "traits": { + "smithy.api#documentation": "Tags to assign to the questionnaire. Each entry must include a categoryId and tagId. Replaces all existing tags." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateWebsiteQuestionnaire": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateWebsiteQuestionnaireRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaire" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/customer-trust/questionnaires/website", + "code": 200 + }, + "smithy.api#documentation": "Create website questionnaire\n\nCreate a new website-based questionnaire from a portal URL.\n\nThe portal URL is used to fetch questionnaire content from the target website." + } + }, + "com.vanta.manage_vanta#GetQuestionnaireRequest": { + "type": "structure", + "members": { + "questionnaireId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetQuestionnaire": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetQuestionnaireRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaire" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/customer-trust/questionnaires/{questionnaireId}", + "code": 200 + }, + "smithy.api#documentation": "Get questionnaire by ID\n\nRetrieve a questionnaire by ID." + } + }, + "com.vanta.manage_vanta#SettableQuestionnaireStatus": { + "type": "enum", + "members": { + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "IN_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_REVIEW" + } + }, + "READY_FOR_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_REVIEW" + } + }, + "WAITING_ON_ANSWERS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WAITING_ON_ANSWERS" + } + }, + "ON_HOLD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ON_HOLD" + } + }, + "NO_LONGER_NEEDED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NO_LONGER_NEEDED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UpdateActorAssignment": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#UpdateActorAssignmentType", + "traits": { + "smithy.api#documentation": "The type of actor: \"User\" for an individual user, \"Team\" for a team.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the user or team.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Actor assignment for setting an owner or approver." + } + }, + "com.vanta.manage_vanta#UpdateActorAssignmentType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "User" + } + }, + "TEAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Team" + } + } + }, + "traits": { + "smithy.api#documentation": "The type of actor: \"User\" for an individual user, \"Team\" for a team." + } + }, + "com.vanta.manage_vanta#UpdateQuestionnaireRequestMetadataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#QuestionnaireMetadata" + }, + "traits": { + "smithy.api#documentation": "Metadata key-value pairs" + } + }, + "com.vanta.manage_vanta#UpdateQuestionnaireRequestTagAndCategoryIdsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": { + "smithy.api#documentation": "Tags to assign to the questionnaire. Each entry must include a categoryId and tagId. Replaces all existing tags." + } + }, + "com.vanta.manage_vanta#UpdateQuestionnaireRequest": { + "type": "structure", + "members": { + "questionnaireId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the questionnaire" + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Due date for questionnaire completion (ISO 8601 string, null to clear)", + "com.distilled.openapi#nullable": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#SettableQuestionnaireStatus", + "traits": { + "smithy.api#documentation": "Status transition (limited to settable statuses)" + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#UpdateActorAssignment", + "traits": { + "smithy.api#documentation": "Owner assignment as Actor (null to unassign)", + "com.distilled.openapi#nullable": {} + } + }, + "approverAssignment": { + "target": "com.vanta.manage_vanta#UpdateActorAssignment", + "traits": { + "smithy.api#documentation": "Approver assignment as Actor (null to unassign, requires QuestionnaireAutomationAdvanced)", + "com.distilled.openapi#nullable": {} + } + }, + "metadata": { + "target": "com.vanta.manage_vanta#UpdateQuestionnaireRequestMetadataList", + "traits": { + "smithy.api#documentation": "Metadata key-value pairs" + } + }, + "tagAndCategoryIds": { + "target": "com.vanta.manage_vanta#UpdateQuestionnaireRequestTagAndCategoryIdsList", + "traits": { + "smithy.api#documentation": "Tags to assign to the questionnaire. Each entry must include a categoryId and tagId. Replaces all existing tags." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateQuestionnaire": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateQuestionnaireRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaire" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/customer-trust/questionnaires/{questionnaireId}", + "code": 200 + }, + "smithy.api#documentation": "Update questionnaire\n\nUpdate an existing questionnaire.\n\nUpdates one or more fields of a questionnaire.\nThis endpoint cannot be used to set a questionnaire's status to `APPROVED` or `COMPLETED`. To perform those specific transitions, please use the `approveQuestionnaire` and `completeQuestionnaire` endpoints, respectively." + } + }, + "com.vanta.manage_vanta#DeleteQuestionnaireRequest": { + "type": "structure", + "members": { + "questionnaireId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteQuestionnaire": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteQuestionnaireRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/customer-trust/questionnaires/{questionnaireId}", + "code": 200 + }, + "smithy.api#documentation": "Delete questionnaire\n\nDelete a questionnaire by ID." + } + }, + "com.vanta.manage_vanta#ApproveQuestionnaireRequest": { + "type": "structure", + "members": { + "questionnaireId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "statusChangeMessage": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional message describing the reason for approval." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ApproveQuestionnaire": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ApproveQuestionnaireRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaire" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/customer-trust/questionnaires/{questionnaireId}/approve", + "code": 200 + }, + "smithy.api#documentation": "Approve questionnaire\n\nMark a questionnaire as `APPROVED` and optionally provide a `statusChangeMessage`." + } + }, + "com.vanta.manage_vanta#CompleteQuestionnaireRequest": { + "type": "structure", + "members": { + "questionnaireId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "shouldSyncApprovedToAnswerLibrary": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether to sync approved answers to the answer library.\nDefaults to true. Ignored for non-English SPREADSHEET/DOCUMENT questionnaires." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CompleteQuestionnaire": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CompleteQuestionnaireRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CustomerTrustQuestionnaire" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/customer-trust/questionnaires/{questionnaireId}/complete", + "code": 200 + }, + "smithy.api#documentation": "Complete questionnaire\n\nComplete a questionnaire and optionally sync approved answers to the answer library.\n\nTransitions the questionnaire status to COMPLETE. If `shouldSyncApprovedToAnswerLibrary` is true\n(the default), approved answers are added to the answer library for future use. For\nnon-English SPREADSHEET or DOCUMENT questionnaires, answer library sync will be ignored." + } + }, + "com.vanta.manage_vanta#ListQuestionnaireResponsesRequest": { + "type": "structure", + "members": { + "questionnaireId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "q": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "q", + "smithy.api#documentation": "Filter responses by question text (case-insensitive, partial match)." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseQuestionnaireResponseWithoutViewerPermissions": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissions": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the questionnaire response", + "smithy.api#required": {} + } + }, + "sectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The questionnaire section this response belongs to, if any.\nNull for standalone questions or legacy responses without a section.", + "com.distilled.openapi#nullable": {} + } + }, + "sequenceLabel": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Sequence label for ordering responses within a questionnaire" + } + }, + "question": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The actual question text", + "smithy.api#required": {} + } + }, + "answer": { + "target": "com.vanta.manage_vanta#DeprecatedQAutoAnswerForAPI", + "traits": { + "smithy.api#documentation": "The current answer for the question." + } + }, + "editedBy": { + "target": "com.vanta.manage_vanta#CustomerTrustUser", + "traits": { + "smithy.api#documentation": "The user who last edited the question/answer", + "com.distilled.openapi#nullable": {} + } + }, + "approvedBy": { + "target": "com.vanta.manage_vanta#CustomerTrustUser", + "traits": { + "smithy.api#documentation": "The user who approved the current answer", + "com.distilled.openapi#nullable": {} + } + }, + "isPendingAnswerGeneration": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Indicates whether the answer is currently being worked on by AI.", + "smithy.api#required": {} + } + }, + "originType": { + "target": "com.vanta.manage_vanta#QuestionnaireResponseOriginType", + "traits": { + "smithy.api#documentation": "Where the current answer has came from\n- AI: generated by Vanta AI\n- Manual: written in by a user\n- Original questionnaire: included in the original import\n- Answer library: the answer was found in a matching question in the knowledge center\n- Resource: the answer was found in a matching excerpt from a document in the knowledge center" + } + }, + "answerSchema": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "JSON Schema describing the expected answer format for this question.\nPrefer `answerPartsSchema` + `answerPartsValues` — those mirror the\napps/web GraphQL surface and let clients render against the\ncanonical composite schema." + } + }, + "answerPartsSchema": { + "target": "com.vanta.manage_vanta#JSONSchema7", + "traits": { + "smithy.api#documentation": "Composite JSONSchema7 built from the response's stored answer parts\n(via `toCompositeSchema`). Mirrors the GraphQL `answerPartsSchema`\nfield. Absent when the response has no stored parts — clients fall\nback to the legacy `answerSchema` field." + } + }, + "answerPartsValues": { + "target": "com.vanta.manage_vanta#RecordStringAnswerPartValue", + "traits": { + "smithy.api#documentation": "Flat map of part-id → current value (via `toAnswerPartsValues`).\nSame key set as `answerPartsSchema.properties`. Absent when the\nresponse has no stored parts." + } + }, + "attachedEvidence": { + "target": "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceList", + "traits": { + "smithy.api#documentation": "Evidence documents attached to support this questionnaire response" + } + }, + "generatedAnswerLogId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Id of the QAutoGeneratedAnswerLog that produced the current generated\nanswer on this response, if any. The browser extension API exposes the log\nbody and citations at\n`GET /questionnaires/{questionnaireId}/responses/{responseId}/generated-answer-log`." + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#ActorAssignment", + "traits": { + "smithy.api#documentation": "The response's owner, or null when no owner is assigned. Resolved from the\nobject-role grant rather than the response document's legacy `ownerUserId`,\nwhich the object-role registry leaves unset for Team owners.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A questionnaire response without the fields that describe what the\nrequesting user may do with it. Surfaces that authenticate a client rather\nthan a user return this, since there is no user those fields could describe." + } + }, + "com.vanta.manage_vanta#DeprecatedQAutoAnswerForAPI": { + "type": "structure", + "members": { + "explanation": { + "target": "smithy.api#String", + "traits": { + "com.distilled.openapi#nullable": {} + } + }, + "multipleChoice": { + "target": "com.vanta.manage_vanta#QuestionnaireResponseMultipleChoiceAnswer", + "traits": { + "com.distilled.openapi#nullable": {} + } + }, + "multipleChoiceCustom": { + "target": "smithy.api#String", + "traits": { + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Frozen local clone of the shared `QAutoAnswer` shape, scoped to the\ndeprecated REST `answer` field so that field's contract does not track\nchanges to the shared answer-library type. No longer populated at runtime;\nremoval is tracked by CTAUTO-1973." + } + }, + "com.vanta.manage_vanta#QuestionnaireResponseMultipleChoiceAnswer": { + "type": "enum", + "members": { + "NO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NO" + } + }, + "NOT_APPLICABLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_APPLICABLE" + } + }, + "YES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "YES" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustUser": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "organizationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "givenName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "familyName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireResponseOriginType": { + "type": "enum", + "members": { + "AI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AI" + } + }, + "ANSWER_LIBRARY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ANSWER_LIBRARY" + } + }, + "MANUAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MANUAL" + } + }, + "ORIGINAL_QUESTIONNAIRE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ORIGINAL_QUESTIONNAIRE" + } + }, + "RESOURCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RESOURCE" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7": { + "type": "structure", + "members": { + "_id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#jsonName": "$id" + } + }, + "_ref": { + "target": "smithy.api#String", + "traits": { + "smithy.api#jsonName": "$ref" + } + }, + "_schema": { + "target": "smithy.api#String", + "traits": { + "smithy.api#jsonName": "$schema" + } + }, + "_comment": { + "target": "smithy.api#String", + "traits": { + "smithy.api#jsonName": "$comment" + } + }, + "_defs": { + "target": "com.vanta.manage_vanta#JSONSchema7DefsMap", + "traits": { + "smithy.api#jsonName": "$defs" + } + }, + "type": { + "target": "com.vanta.manage_vanta#JSONSchema7Type" + }, + "enum": { + "target": "com.vanta.manage_vanta#JSONSchema7EnumList" + }, + "const": { + "target": "com.vanta.manage_vanta#JSONSchema7Type2", + "traits": { + "com.distilled.openapi#nullable": {} + } + }, + "multipleOf": { + "target": "smithy.api#Double" + }, + "maximum": { + "target": "smithy.api#Double" + }, + "exclusiveMaximum": { + "target": "smithy.api#Double" + }, + "minimum": { + "target": "smithy.api#Double" + }, + "exclusiveMinimum": { + "target": "smithy.api#Double" + }, + "maxLength": { + "target": "smithy.api#Double" + }, + "minLength": { + "target": "smithy.api#Double" + }, + "pattern": { + "target": "smithy.api#String" + }, + "items": { + "target": "com.vanta.manage_vanta#JSONSchema7Items" + }, + "additionalItems": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "maxItems": { + "target": "smithy.api#Double" + }, + "minItems": { + "target": "smithy.api#Double" + }, + "uniqueItems": { + "target": "smithy.api#Boolean" + }, + "contains": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "maxProperties": { + "target": "smithy.api#Double" + }, + "minProperties": { + "target": "smithy.api#Double" + }, + "required": { + "target": "com.vanta.manage_vanta#JSONSchema7RequiredList" + }, + "properties": { + "target": "com.vanta.manage_vanta#JSONSchema7PropertiesMap" + }, + "patternProperties": { + "target": "com.vanta.manage_vanta#JSONSchema7PatternPropertiesMap" + }, + "additionalProperties": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "dependencies": { + "target": "com.vanta.manage_vanta#JSONSchema7DependenciesMap" + }, + "propertyNames": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "if": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "then": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "else": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "allOf": { + "target": "com.vanta.manage_vanta#JSONSchema7AllOfList" + }, + "anyOf": { + "target": "com.vanta.manage_vanta#JSONSchema7AnyOfList" + }, + "oneOf": { + "target": "com.vanta.manage_vanta#JSONSchema7OneOfList" + }, + "not": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "format": { + "target": "smithy.api#String" + }, + "contentMediaType": { + "target": "smithy.api#String" + }, + "contentEncoding": { + "target": "smithy.api#String" + }, + "definitions": { + "target": "com.vanta.manage_vanta#JSONSchema7DefinitionsMap" + }, + "title": { + "target": "smithy.api#String" + }, + "description": { + "target": "smithy.api#String" + }, + "default": { + "target": "com.vanta.manage_vanta#JSONSchema7Type2", + "traits": { + "com.distilled.openapi#nullable": {} + } + }, + "readOnly": { + "target": "smithy.api#Boolean" + }, + "writeOnly": { + "target": "smithy.api#Boolean" + }, + "examples": { + "target": "com.vanta.manage_vanta#JSONSchema7Type2", + "traits": { + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7Definition": { + "type": "union", + "members": { + "JSONSchema7": { + "target": "com.vanta.manage_vanta#JSONSchema7" + }, + "Case1": { + "target": "smithy.api#Boolean" + } + }, + "traits": { + "smithy.api#documentation": "JSON Schema v7" + } + }, + "com.vanta.manage_vanta#JSONSchema7DefsMap": { + "type": "map", + "key": { + "target": "smithy.api#String" + }, + "value": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7TypeName": { + "type": "enum", + "members": { + "STRING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "string" + } + }, + "NUMBER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "number" + } + }, + "INTEGER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "integer" + } + }, + "BOOLEAN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "boolean" + } + }, + "OBJECT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "object" + } + }, + "ARRAY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "array" + } + }, + "NULL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "null" + } + } + }, + "traits": { + "smithy.api#documentation": "Primitive type" + } + }, + "com.vanta.manage_vanta#JSONSchema7TypeCase1List": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#JSONSchema7TypeName" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7Type": { + "type": "union", + "members": { + "JSONSchema7TypeName": { + "target": "com.vanta.manage_vanta#JSONSchema7TypeName" + }, + "Case1": { + "target": "com.vanta.manage_vanta#JSONSchema7TypeCase1List" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7Type2": { + "type": "union", + "members": { + "Case0": { + "target": "smithy.api#String" + }, + "Case1": { + "target": "smithy.api#Double" + }, + "Case2": { + "target": "smithy.api#Boolean" + }, + "JSONSchema7Object": { + "target": "com.vanta.manage_vanta#JSONSchema7Object" + }, + "JSONSchema7Array": { + "target": "smithy.api#Document" + } + }, + "traits": { + "smithy.api#documentation": "Primitive type" + } + }, + "com.vanta.manage_vanta#JSONSchema7Object": { + "type": "map", + "key": { + "target": "smithy.api#String" + }, + "value": { + "target": "com.vanta.manage_vanta#JSONSchema7Type2" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7EnumList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#JSONSchema7Type2" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7ItemsCase1List": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7Items": { + "type": "union", + "members": { + "JSONSchema7Definition": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "Case1": { + "target": "com.vanta.manage_vanta#JSONSchema7ItemsCase1List" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7RequiredList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7PropertiesMap": { + "type": "map", + "key": { + "target": "smithy.api#String" + }, + "value": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7PatternPropertiesMap": { + "type": "map", + "key": { + "target": "smithy.api#String" + }, + "value": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7DependenciesValueCase1List": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7DependenciesValue": { + "type": "union", + "members": { + "JSONSchema7Definition": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "Case1": { + "target": "com.vanta.manage_vanta#JSONSchema7DependenciesValueCase1List" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7DependenciesMap": { + "type": "map", + "key": { + "target": "smithy.api#String" + }, + "value": { + "target": "com.vanta.manage_vanta#JSONSchema7DependenciesValue" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7AllOfList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7AnyOfList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7OneOfList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "traits": {} + }, + "com.vanta.manage_vanta#JSONSchema7DefinitionsMap": { + "type": "map", + "key": { + "target": "smithy.api#String" + }, + "value": { + "target": "com.vanta.manage_vanta#JSONSchema7Definition" + }, + "traits": {} + }, + "com.vanta.manage_vanta#RecordStringAnswerPartValue": { + "type": "map", + "key": { + "target": "smithy.api#String" + }, + "value": { + "target": "com.vanta.manage_vanta#AnswerPartValue" + }, + "traits": { + "smithy.api#documentation": "Construct a type with a set of properties K of type T" + } + }, + "com.vanta.manage_vanta#AnswerPartValue": { + "type": "union", + "members": { + "Case0": { + "target": "smithy.api#String" + }, + "Case1": { + "target": "smithy.api#Double" + }, + "Case2": { + "target": "smithy.api#Boolean" + }, + "Case3": { + "target": "com.vanta.manage_vanta#AnswerPartValueCase3List" + } + }, + "traits": { + "smithy.api#documentation": "Valid runtime value types for an answer part. Array values are restricted\nto string items to match `ArrayFieldSchema.items` (which is narrowed to\n`StringFieldSchema` only)." + } + }, + "com.vanta.manage_vanta#AnswerPartValueCase3List": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItemUploadedDocument": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String" + }, + "filename": { + "target": "smithy.api#String" + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItem": { + "type": "structure", + "members": { + "uploadedDocument": { + "target": "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItemUploadedDocument", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItem" + }, + "traits": { + "smithy.api#documentation": "Evidence documents attached to support this questionnaire response" + } + }, + "com.vanta.manage_vanta#PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissions" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListQuestionnaireResponses": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListQuestionnaireResponsesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseQuestionnaireResponseWithoutViewerPermissions" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/customer-trust/questionnaires/{questionnaireId}/responses", + "code": 200 + }, + "smithy.api#documentation": "List questionnaire responses\n\nList the responses on a questionnaire. Each response carries its\n`answerPartsSchema` and `answerPartsValues`, which describe the parts an\nanswer is composed of and their current values." + } + }, + "com.vanta.manage_vanta#GetQuestionnaireResponseRequest": { + "type": "structure", + "members": { + "questionnaireId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "responseId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetQuestionnaireResponse": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetQuestionnaireResponseRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissions" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/customer-trust/questionnaires/{questionnaireId}/responses/{responseId}", + "code": 200 + }, + "smithy.api#documentation": "Get questionnaire response\n\nRetrieve a single questionnaire response." + } + }, + "com.vanta.manage_vanta#RecordStringUnknown": { + "type": "map", + "key": { + "target": "smithy.api#String" + }, + "value": { + "target": "smithy.api#Document" + }, + "traits": { + "smithy.api#documentation": "Construct a type with a set of properties K of type T" + } + }, + "com.vanta.manage_vanta#UpdateQuestionnaireResponseContentRequest": { + "type": "structure", + "members": { + "questionnaireId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "responseId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "answerPartsValues": { + "target": "com.vanta.manage_vanta#RecordStringUnknown", + "traits": { + "smithy.api#documentation": "Map of answer part id -> value, matching the shape of the\n`answerPartsValues` read field. Values must be string, number,\nboolean, null, or string[]. A null value clears that part's value;\nids omitted from the map are left unchanged.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateQuestionnaireResponseContent": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateQuestionnaireResponseContentRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissions" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/customer-trust/questionnaires/{questionnaireId}/responses/{responseId}", + "code": 200 + }, + "smithy.api#documentation": "Update questionnaire response content\n\nUpdate the answer content of a questionnaire response. The edit is\nrecorded as performed by the calling application, since vanta-api\nauthenticates an OAuth client rather than a specific user." + } + }, + "com.vanta.manage_vanta#UpdateQuestionnaireResponseOwnerRequest": { + "type": "structure", + "members": { + "questionnaireId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "responseId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#UpdateActorAssignment", + "traits": { + "smithy.api#documentation": "New owner, or null to clear the current owner.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateQuestionnaireResponseOwner": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateQuestionnaireResponseOwnerRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#QuestionnaireResponseWithoutViewerPermissions" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/customer-trust/questionnaires/{questionnaireId}/responses/{responseId}/owner", + "code": 200 + }, + "smithy.api#documentation": "Update questionnaire response owner\n\nReassign or clear the owner of a questionnaire response. The assignment is\nrecorded as performed by the calling API client, so the notification to the\nnew owner names the Vanta API rather than a user." + } + }, + "com.vanta.manage_vanta#CustomerTrustProductContextIdFilter": { + "type": "enum", + "members": { + "EXTERNAL_TRUST_CENTER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXTERNAL_TRUST_CENTER" + } + }, + "DOCUMENT_SHARING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DOCUMENT_SHARING" + } + }, + "CONTROL_SHARING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTROL_SHARING" + } + }, + "QUESTIONNAIRE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QUESTIONNAIRE" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTagCategoriesRequestProductContextIdsMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomerTrustProductContextIdFilter" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTagCategoriesRequest": { + "type": "structure", + "members": { + "productContextIdsMatchesAny": { + "target": "com.vanta.manage_vanta#ListTagCategoriesRequestProductContextIdsMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "productContextIdsMatchesAny" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseUserDefinedTagCategory": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseUserDefinedTagCategoryResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UserDefinedTagCategory": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ArrayResponseUserDefinedTagCategoryResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#UserDefinedTagCategory" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTagCategories": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTagCategoriesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseUserDefinedTagCategory" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/customer-trust/tag-categories", + "code": 200 + }, + "smithy.api#documentation": "List tag categories\n\nList user-defined tag categories. Optionally filter by product context." + } + }, + "com.vanta.manage_vanta#GetTagsForCategoryRequest": { + "type": "structure", + "members": { + "tagCategoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#TagCategoryWithTags": { + "type": "structure", + "members": { + "category": { + "target": "com.vanta.manage_vanta#UserDefinedTagCategory", + "traits": { + "smithy.api#required": {} + } + }, + "tags": { + "target": "com.vanta.manage_vanta#TagCategoryWithTagsTagsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UserDefinedTag": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "category": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TagCategoryWithTagsTagsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#UserDefinedTag" + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetTagsForCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTagsForCategoryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TagCategoryWithTags" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/customer-trust/tag-categories/{tagCategoryId}", + "code": 200 + }, + "smithy.api#documentation": "Get tags for category\n\nRetrieve a tag category and its associated tags by category ID." + } + }, + "com.vanta.manage_vanta#CustomerTrustProductContextIdWritable": { + "type": "enum", + "members": { + "EXTERNAL_TRUST_CENTER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXTERNAL_TRUST_CENTER" + } + }, + "DOCUMENT_SHARING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DOCUMENT_SHARING" + } + }, + "CONTROL_SHARING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTROL_SHARING" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AddTagCategoryProductContextRequest": { + "type": "structure", + "members": { + "tagCategoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "productContextId": { + "target": "com.vanta.manage_vanta#CustomerTrustProductContextIdWritable", + "traits": { + "smithy.api#documentation": "Product context to enable this tag category for.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#AddTagCategoryProductContext": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddTagCategoryProductContextRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/customer-trust/tag-categories/{tagCategoryId}/product-contexts", + "code": 200 + }, + "smithy.api#documentation": "Enable tag category for product context\n\nEnables a tag category for a product context (e.g. document sharing,\ncontrol sharing), making it available for scoping that context's\nshareable content. Idempotent: enabling an already-enabled category is\na no-op." + } + }, + "com.vanta.manage_vanta#RemoveTagCategoryProductContextRequestProductContextId": { + "type": "enum", + "members": { + "EXTERNAL_TRUST_CENTER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXTERNAL_TRUST_CENTER" + } + }, + "DOCUMENT_SHARING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DOCUMENT_SHARING" + } + }, + "CONTROL_SHARING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTROL_SHARING" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#RemoveTagCategoryProductContextRequest": { + "type": "structure", + "members": { + "tagCategoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "productContextId": { + "target": "com.vanta.manage_vanta#RemoveTagCategoryProductContextRequestProductContextId", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#RemoveTagCategoryProductContext": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#RemoveTagCategoryProductContextRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/customer-trust/tag-categories/{tagCategoryId}/product-contexts/{productContextId}", + "code": 200 + }, + "smithy.api#documentation": "Disable tag category for product context\n\nDisables a tag category for a product context. Idempotent: removing a\ncategory that isn't enabled for the context is a no-op." + } + }, + "com.vanta.manage_vanta#DiscoveredVendorScope": { + "type": "enum", + "members": { + "NEEDS_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NEEDS_REVIEW" + } + }, + "IGNORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IGNORED" + } + }, + "REJECTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "REJECTED" + } + } + }, + "traits": { + "smithy.api#documentation": "The scope of a discovered vendor.\nNEEDS_REVIEW: The vendor needs review\nIGNORED: The vendor was ignored\nREJECTED: The vendor was rejected" + } + }, + "com.vanta.manage_vanta#ListDiscoveredVendorsRequest": { + "type": "structure", + "members": { + "scope": { + "target": "com.vanta.manage_vanta#DiscoveredVendorScope", + "traits": { + "smithy.api#httpQuery": "scope", + "smithy.api#documentation": "Defaults to \"NEEDS_REVIEW\" if not provided" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendor": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendorResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DiscoveredVendor": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The discovered vendor's unique ID.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The discovered vendor's display name .", + "smithy.api#required": {} + } + }, + "normalizedName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The discovered vendor's vendorNormalized or canonical name. This is used to group duplicate vendors together.", + "smithy.api#required": {} + } + }, + "category": { + "target": "com.vanta.manage_vanta#DiscoveredVendorCategory", + "traits": { + "smithy.api#documentation": "The discovered vendor's category.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "source": { + "target": "com.vanta.manage_vanta#DiscoveredVendorSource", + "traits": { + "smithy.api#documentation": "The discovered vendor's source .", + "smithy.api#required": {} + } + }, + "discoveredDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The discovered vendor's imported date.", + "smithy.api#required": {} + } + }, + "numberOfAccounts": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of accounts in the discovered vendor.", + "smithy.api#required": {} + } + }, + "ignored": { + "target": "com.vanta.manage_vanta#DiscoveredVendorIgnored", + "traits": { + "smithy.api#documentation": "Determines whether or not the vendor is ignored.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "rejected": { + "target": "com.vanta.manage_vanta#DiscoveredVendorRejected", + "traits": { + "smithy.api#documentation": "Determines whether or not the vendor is rejected.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DiscoveredVendorCategory": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The discovered vendor's category." + } + }, + "com.vanta.manage_vanta#DiscoveredVendorSource": { + "type": "enum", + "members": { + "OKTA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OKTA" + } + }, + "JAMF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "JAMF" + } + }, + "GSUITE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GSUITE" + } + }, + "VENDR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VENDR" + } + }, + "OFFICE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFFICE" + } + } + }, + "traits": { + "smithy.api#documentation": "The source of the discovered vendor.\nOKTA: The vendor was discovered via an Okta integration\nJAMF: The vendor was discovered via a JAMF integration\nGSUITE: The vendor was discovered via an GSuite integration\nVENDR: The vendor was discovered via a Vendr integration\nOFFICE: The vendor was discovered via a microsoft office integration" + } + }, + "com.vanta.manage_vanta#DiscoveredVendorIgnored": { + "type": "structure", + "members": { + "ignoredAtDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the discovered vendor was marked as ignored.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "ignoredReason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The reason the discovered vendor was ignored.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "ignoredByUserId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The user ID who ignored the discovered vendor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Determines whether or not the vendor is ignored." + } + }, + "com.vanta.manage_vanta#DiscoveredVendorRejected": { + "type": "structure", + "members": { + "rejectedByUserId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The user ID who rejected the discovered vendor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "rejectedReason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The reason the discovered vendor was rejected.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "rejectedAtDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the discovered vendor was marked as rejected.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Determines whether or not the vendor is rejected." + } + }, + "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendorResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#DiscoveredVendor" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendorResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendorResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListDiscoveredVendors": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListDiscoveredVendorsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendor" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/discovered-vendors", + "code": 200 + }, + "smithy.api#documentation": "List discovered vendors\n\nList discovered vendors." + } + }, + "com.vanta.manage_vanta#ListDiscoveredVendorAccountsRequest": { + "type": "structure", + "members": { + "discoveredVendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendorAccount": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendorAccountResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DiscoveredVendorAccount": { + "type": "union", + "members": { + "DiscoveredVendorUser": { + "target": "com.vanta.manage_vanta#DiscoveredVendorUser" + }, + "DiscoveredVendorComputer": { + "target": "com.vanta.manage_vanta#DiscoveredVendorComputer" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DiscoveredVendorUser": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The associated user's unique ID.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The associated user's email address.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The associated user's display name .", + "smithy.api#required": {} + } + }, + "type": { + "target": "com.vanta.manage_vanta#DiscoveredVendorAccountTypeUSER", + "traits": { + "smithy.api#documentation": "The account type.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DiscoveredVendorAccountTypeUSER": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USER" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DiscoveredVendorComputer": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The associated computer's unique ID.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The associated computer's display name." + } + }, + "owner": { + "target": "com.vanta.manage_vanta#DiscoveredVendorUser", + "traits": { + "smithy.api#documentation": "The associated computer's owner.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "type": { + "target": "com.vanta.manage_vanta#DiscoveredVendorAccountTypeCOMPUTER", + "traits": { + "smithy.api#documentation": "The account type.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DiscoveredVendorAccountTypeCOMPUTER": { + "type": "enum", + "members": { + "COMPUTER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPUTER" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendorAccountResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#DiscoveredVendorAccount" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendorAccountResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendorAccountResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListDiscoveredVendorAccounts": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListDiscoveredVendorAccountsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseDiscoveredVendorAccount" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/discovered-vendors/{discoveredVendorId}/accounts", + "code": 200 + }, + "smithy.api#documentation": "List of discovered vendor accounts\n\nList of discovered vendor accounts." + } + }, + "com.vanta.manage_vanta#AddDiscoveredVendorToManagedRequest": { + "type": "structure", + "members": { + "discoveredVendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#Vendor": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vendor's unique ID.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vendor's display name.", + "smithy.api#required": {} + } + }, + "websiteUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vendor's website URL.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "accountManagerName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vendor's external account manager name.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "accountManagerEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vendor's external account manager email.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "servicesProvided": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Services provided by the vendor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "additionalNotes": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Any additional notes about the vendor", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "securityOwnerUserId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vendor's security owner's Vanta user ID.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "businessOwnerUserId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vendor's business owner's Vanta user ID.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "contractStartDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the contract with the vendor began.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "contractRenewalDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the contract with the vendor is up for renewal.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "contractTerminationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the contract with the vendor was terminated.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "nextSecurityReviewDueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The next due date for a security review.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "lastSecurityReviewCompletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The most recent date a security review was completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "isVisibleToAuditors": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not auditors can view this vendor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "isRiskAutoScored": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not the vendor's risk is automatically scored.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "riskAttributeIds": { + "target": "com.vanta.manage_vanta#VendorRiskAttributeIdsList", + "traits": { + "smithy.api#documentation": "The list of risk attribute IDs the vendor has been assigned to.", + "smithy.api#required": {} + } + }, + "category": { + "target": "com.vanta.manage_vanta#VendorCategory", + "traits": { + "smithy.api#documentation": "The vendor's category.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "authDetails": { + "target": "com.vanta.manage_vanta#VendorAuthDetails", + "traits": { + "smithy.api#documentation": "The vendor's authentication details.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#VendorStatus", + "traits": { + "smithy.api#documentation": "The vendor's current status.", + "smithy.api#required": {} + } + }, + "inherentRiskLevel": { + "target": "com.vanta.manage_vanta#VendorRiskLevel", + "traits": { + "smithy.api#documentation": "The vendor's risk level.", + "smithy.api#required": {} + } + }, + "residualRiskLevel": { + "target": "com.vanta.manage_vanta#VendorRiskLevel", + "traits": { + "smithy.api#documentation": "The vendor's residual risk level.", + "smithy.api#required": {} + } + }, + "vendorHeadquarters": { + "target": "com.vanta.manage_vanta#CountryCode", + "traits": { + "smithy.api#documentation": "The vendor's headquarters.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "contractAmount": { + "target": "com.vanta.manage_vanta#VendorContractAmount", + "traits": { + "smithy.api#documentation": "The contract amount for the vendor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#VendorCustomFieldsList", + "traits": { + "smithy.api#documentation": "The vendor's custom fields.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "latestDecision": { + "target": "com.vanta.manage_vanta#VendorDecision", + "traits": { + "smithy.api#documentation": "The vendor's latest decision status. Null means no decision has been made.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "linkedTaskTrackerTaskProcurementRequest": { + "target": "com.vanta.manage_vanta#VendorLinkedTaskTrackerTaskProcurementRequest", + "traits": { + "smithy.api#documentation": "The task tracker procurement request associated with this vendor (if linked).", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorRiskAttributeIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The list of risk attribute IDs the vendor has been assigned to." + } + }, + "com.vanta.manage_vanta#VendorCategory": { + "type": "structure", + "members": { + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The vendor's category." + } + }, + "com.vanta.manage_vanta#VendorAuthenticationMethod": { + "type": "enum", + "members": { + "AUTH_0": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUTH_0" + } + }, + "AZURE_AD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AZURE_AD" + } + }, + "GOOGLE_WORKSPACE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GOOGLE_WORKSPACE" + } + }, + "O_AUTH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "O_AUTH" + } + }, + "O365": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "O365" + } + }, + "OKTA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OKTA" + } + }, + "ONE_LOGIN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ONE_LOGIN" + } + }, + "OWA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OWA" + } + }, + "SSO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SSO" + } + }, + "USERNAME_PASSWORD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USERNAME_PASSWORD" + } + }, + "OTHER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OTHER" + } + } + }, + "traits": { + "smithy.api#documentation": "The authentication method a vendor uses:\n- AUTH_0: The vendor authenticates using Auth0\n- AZURE_AD: The vendor authenticates using Azure Active Directory\n- G_SUITE: The vendor authenticates using Google Workspace\n- O_AUTH: The vendor authenticates using OAuth\n- O365: The vendor authenticates using Office 365\n- OKTA: The vendor authenticates using Okta\n- ONE_LOGIN: The vendor authenticates using OneLogin\n- OWA: The vendor authenticates using OWA\n- SSO: The vendor authenticates using SSO\n- USERNAME_PASSWORD: The vendor authenticates using usernames and passwords" + } + }, + "com.vanta.manage_vanta#VendorAuthDetails": { + "type": "structure", + "members": { + "passwordMinimumLength": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Minimum number for chacters required for passwords for this vendor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "passwordRequiresSymbol": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not the vendor requires passwords to have a symbol.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "passwordRequiresNumber": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not the vendor requires passwords to have a number.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "passwordMFA": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not the vendor requires passwords to have multi factor authentication.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "method": { + "target": "com.vanta.manage_vanta#VendorAuthenticationMethod", + "traits": { + "smithy.api#documentation": "The vendor's authentication method.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The vendor's authentication details." + } + }, + "com.vanta.manage_vanta#VendorStatus": { + "type": "enum", + "members": { + "MANAGED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MANAGED" + } + }, + "ARCHIVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ARCHIVED" + } + }, + "IN_PROCUREMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROCUREMENT" + } + } + }, + "traits": { + "smithy.api#documentation": "The current state of a vendor:\n- MANAGED: The vendor is actively managed.\n- ARCHIVED: The vendor has been archived\n- IN_PROCUREMENT: The vendor is in the procurement process" + } + }, + "com.vanta.manage_vanta#VendorRiskLevel": { + "type": "enum", + "members": { + "CRITICAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRITICAL" + } + }, + "HIGH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HIGH" + } + }, + "LOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LOW" + } + }, + "MEDIUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MEDIUM" + } + }, + "UNSCORED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UNSCORED" + } + } + }, + "traits": { + "smithy.api#documentation": "The risk level of a vendor:\n- CRITICAL: The vendor has a critical security risk\n- HIGH: The vendor has a high security risk\n- MEDIUM: The vendor has a medium security risk\n- LOW: The vendor has a low security risk\n- UNSCORED: The vendor has not been given a risk level" + } + }, + "com.vanta.manage_vanta#CountryCode": { + "type": "enum", + "members": { + "EUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EUE" + } + }, + "AND": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AND" + } + }, + "ARE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ARE" + } + }, + "AFG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AFG" + } + }, + "ATG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ATG" + } + }, + "AIA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AIA" + } + }, + "ALB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ALB" + } + }, + "ARM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ARM" + } + }, + "AGO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AGO" + } + }, + "ATA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ATA" + } + }, + "ARG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ARG" + } + }, + "ASM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ASM" + } + }, + "AUT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUT" + } + }, + "AUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUS" + } + }, + "ABW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ABW" + } + }, + "ALA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ALA" + } + }, + "AZE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AZE" + } + }, + "BIH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BIH" + } + }, + "BRB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BRB" + } + }, + "BGD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BGD" + } + }, + "BEL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BEL" + } + }, + "BFA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BFA" + } + }, + "BGR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BGR" + } + }, + "BHR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BHR" + } + }, + "BDI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BDI" + } + }, + "BEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BEN" + } + }, + "BLM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BLM" + } + }, + "BMU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BMU" + } + }, + "BRN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BRN" + } + }, + "BOL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BOL" + } + }, + "BES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BES" + } + }, + "BRA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BRA" + } + }, + "BHS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BHS" + } + }, + "BTN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BTN" + } + }, + "BVT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BVT" + } + }, + "BWA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BWA" + } + }, + "BLR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BLR" + } + }, + "BLZ": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BLZ" + } + }, + "CAN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CAN" + } + }, + "CCK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CCK" + } + }, + "COD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COD" + } + }, + "CAF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CAF" + } + }, + "COG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COG" + } + }, + "CHE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CHE" + } + }, + "CIV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CIV" + } + }, + "COK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COK" + } + }, + "CHL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CHL" + } + }, + "CMR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CMR" + } + }, + "CHN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CHN" + } + }, + "COL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COL" + } + }, + "CRI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRI" + } + }, + "CUB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CUB" + } + }, + "CPV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CPV" + } + }, + "CUW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CUW" + } + }, + "CXR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CXR" + } + }, + "CYP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CYP" + } + }, + "CZE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CZE" + } + }, + "DEU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DEU" + } + }, + "DJI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DJI" + } + }, + "DNK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DNK" + } + }, + "DMA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DMA" + } + }, + "DOM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DOM" + } + }, + "DZA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DZA" + } + }, + "ECU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ECU" + } + }, + "EST": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EST" + } + }, + "EGY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EGY" + } + }, + "ESH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ESH" + } + }, + "ERI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERI" + } + }, + "ESP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ESP" + } + }, + "ETH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ETH" + } + }, + "FIN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FIN" + } + }, + "FJI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FJI" + } + }, + "FLK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FLK" + } + }, + "FSM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FSM" + } + }, + "FRO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FRO" + } + }, + "FRA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FRA" + } + }, + "GAB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GAB" + } + }, + "ENG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ENG" + } + }, + "SCT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SCT" + } + }, + "GBR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GBR" + } + }, + "WAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WAL" + } + }, + "NIR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIR" + } + }, + "GRD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GRD" + } + }, + "GEO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GEO" + } + }, + "GUF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GUF" + } + }, + "GGY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GGY" + } + }, + "GHA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GHA" + } + }, + "GIB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GIB" + } + }, + "GRL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GRL" + } + }, + "GMB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GMB" + } + }, + "GIN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GIN" + } + }, + "GLP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GLP" + } + }, + "GNQ": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GNQ" + } + }, + "GRC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GRC" + } + }, + "SGS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SGS" + } + }, + "GTM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GTM" + } + }, + "GUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GUM" + } + }, + "GNB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GNB" + } + }, + "GUY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GUY" + } + }, + "HKG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HKG" + } + }, + "HMD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HMD" + } + }, + "HND": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HND" + } + }, + "HRV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HRV" + } + }, + "HTI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HTI" + } + }, + "HUN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HUN" + } + }, + "IDN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IDN" + } + }, + "IRL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IRL" + } + }, + "ISR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISR" + } + }, + "IMN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IMN" + } + }, + "IND": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IND" + } + }, + "IOT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IOT" + } + }, + "IRQ": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IRQ" + } + }, + "IRN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IRN" + } + }, + "ISL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ISL" + } + }, + "ITA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ITA" + } + }, + "JEY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "JEY" + } + }, + "JAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "JAM" + } + }, + "JOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "JOR" + } + }, + "JPN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "JPN" + } + }, + "KEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KEN" + } + }, + "KGZ": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KGZ" + } + }, + "KHM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KHM" + } + }, + "KIR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KIR" + } + }, + "COM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COM" + } + }, + "KNA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KNA" + } + }, + "PRK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRK" + } + }, + "KOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KOR" + } + }, + "KWT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KWT" + } + }, + "CYM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CYM" + } + }, + "KAZ": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KAZ" + } + }, + "LAO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LAO" + } + }, + "LBN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LBN" + } + }, + "LCA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LCA" + } + }, + "LIE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LIE" + } + }, + "LKA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LKA" + } + }, + "LBR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LBR" + } + }, + "LSO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LSO" + } + }, + "LTU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LTU" + } + }, + "LUX": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LUX" + } + }, + "LVA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LVA" + } + }, + "LBY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LBY" + } + }, + "MAR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MAR" + } + }, + "MCO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MCO" + } + }, + "MDA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MDA" + } + }, + "MNE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MNE" + } + }, + "MAF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MAF" + } + }, + "MDG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MDG" + } + }, + "MHL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MHL" + } + }, + "MKD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MKD" + } + }, + "MLI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MLI" + } + }, + "MMR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MMR" + } + }, + "MNG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MNG" + } + }, + "MAC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MAC" + } + }, + "MNP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MNP" + } + }, + "MTQ": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MTQ" + } + }, + "MRT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MRT" + } + }, + "MSR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MSR" + } + }, + "MLT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MLT" + } + }, + "MUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MUS" + } + }, + "MDV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MDV" + } + }, + "MWI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MWI" + } + }, + "MEX": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MEX" + } + }, + "MYS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MYS" + } + }, + "MOZ": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MOZ" + } + }, + "NAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NAM" + } + }, + "NCL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NCL" + } + }, + "NER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NER" + } + }, + "NFK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NFK" + } + }, + "NGA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NGA" + } + }, + "NIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIC" + } + }, + "NLD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NLD" + } + }, + "NOR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOR" + } + }, + "NPL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NPL" + } + }, + "NRU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NRU" + } + }, + "NIU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NIU" + } + }, + "NZL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NZL" + } + }, + "OMN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OMN" + } + }, + "PAN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PAN" + } + }, + "PER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PER" + } + }, + "PYF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PYF" + } + }, + "PNG": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PNG" + } + }, + "PHL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PHL" + } + }, + "PAK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PAK" + } + }, + "POL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POL" + } + }, + "SPM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SPM" + } + }, + "PCN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PCN" + } + }, + "PRI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRI" + } + }, + "PSE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PSE" + } + }, + "PRT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRT" + } + }, + "PLW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PLW" + } + }, + "PRY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRY" + } + }, + "QAT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QAT" + } + }, + "REU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "REU" + } + }, + "ROU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ROU" + } + }, + "SRB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SRB" + } + }, + "RUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RUS" + } + }, + "RWA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RWA" + } + }, + "SAU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SAU" + } + }, + "SLB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SLB" + } + }, + "SYC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SYC" + } + }, + "SDN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SDN" + } + }, + "SWE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SWE" + } + }, + "SGP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SGP" + } + }, + "SHN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SHN" + } + }, + "SVN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SVN" + } + }, + "SJM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SJM" + } + }, + "SVK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SVK" + } + }, + "SLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SLE" + } + }, + "SMR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SMR" + } + }, + "SEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SEN" + } + }, + "SOM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SOM" + } + }, + "SUR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SUR" + } + }, + "SSD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SSD" + } + }, + "STP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "STP" + } + }, + "SLV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SLV" + } + }, + "SXM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SXM" + } + }, + "SYR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SYR" + } + }, + "SWZ": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SWZ" + } + }, + "TCA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TCA" + } + }, + "TCD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TCD" + } + }, + "ATF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ATF" + } + }, + "TGO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TGO" + } + }, + "THA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "THA" + } + }, + "TJK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TJK" + } + }, + "TKL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TKL" + } + }, + "TLS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TLS" + } + }, + "TKM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TKM" + } + }, + "TUN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TUN" + } + }, + "TON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TON" + } + }, + "TUR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TUR" + } + }, + "TTO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TTO" + } + }, + "TUV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TUV" + } + }, + "TWN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TWN" + } + }, + "TZA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TZA" + } + }, + "UKR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UKR" + } + }, + "UGA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UGA" + } + }, + "UMI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UMI" + } + }, + "USA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USA" + } + }, + "URY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "URY" + } + }, + "UZB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UZB" + } + }, + "VAT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VAT" + } + }, + "VCT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VCT" + } + }, + "VEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VEN" + } + }, + "VGB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VGB" + } + }, + "VIR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VIR" + } + }, + "VNM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VNM" + } + }, + "VUT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VUT" + } + }, + "WLF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WLF" + } + }, + "WSM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WSM" + } + }, + "YEM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "YEM" + } + }, + "MYT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MYT" + } + }, + "ZAF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ZAF" + } + }, + "ZMB": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ZMB" + } + }, + "ZWE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ZWE" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorContractAmount": { + "type": "structure", + "members": { + "amount": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The amount of the contract.", + "smithy.api#required": {} + } + }, + "currency": { + "target": "com.vanta.manage_vanta#CurrencyCode", + "traits": { + "smithy.api#documentation": "The currency of the contract.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CurrencyCode": { + "type": "enum", + "members": { + "ARS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ARS" + } + }, + "AUD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUD" + } + }, + "BRL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BRL" + } + }, + "CAD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CAD" + } + }, + "COP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COP" + } + }, + "CZK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CZK" + } + }, + "DKK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DKK" + } + }, + "EUR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EUR" + } + }, + "GBP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GBP" + } + }, + "ILS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ILS" + } + }, + "INR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INR" + } + }, + "JPY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "JPY" + } + }, + "MXN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MXN" + } + }, + "NOK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOK" + } + }, + "NZD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NZD" + } + }, + "PHP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PHP" + } + }, + "PKR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PKR" + } + }, + "PLN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PLN" + } + }, + "RSD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RSD" + } + }, + "SEK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SEK" + } + }, + "SGD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SGD" + } + }, + "UAH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UAH" + } + }, + "USD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USD" + } + }, + "ZAR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ZAR" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomField" + }, + "traits": { + "smithy.api#documentation": "The vendor's custom fields." + } + }, + "com.vanta.manage_vanta#VendorDecision": { + "type": "structure", + "members": { + "status": { + "target": "com.vanta.manage_vanta#VendorDecisionStatus", + "traits": { + "smithy.api#required": {} + } + }, + "lastUpdatedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The decision for a vendor." + } + }, + "com.vanta.manage_vanta#VendorDecisionStatus": { + "type": "enum", + "members": { + "APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPROVED" + } + }, + "CONDITIONALLY_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONDITIONALLY_APPROVED" + } + }, + "NOT_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_APPROVED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorLinkedTaskTrackerTaskProcurementRequest": { + "type": "structure", + "members": { + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "service": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The task tracker procurement request associated with this vendor (if linked)." + } + }, + "com.vanta.manage_vanta#AddDiscoveredVendorToManaged": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddDiscoveredVendorToManagedRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Vendor" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/discovered-vendors/{discoveredVendorId}/add-to-managed", + "code": 200 + }, + "smithy.api#documentation": "Adds a discovered vendor to managed vendor by ID\n\nAdd a discovered vendor to managed vendor." + } + }, + "com.vanta.manage_vanta#ListDocumentsRequestFrameworkMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListDocumentsRequestStatusMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#DocumentStatus" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListDocumentsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "frameworkMatchesAny": { + "target": "com.vanta.manage_vanta#ListDocumentsRequestFrameworkMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "frameworkMatchesAny", + "smithy.api#documentation": "Includes all documents that match one of the provided framework values in frameworkMatchesAny." + } + }, + "statusMatchesAny": { + "target": "com.vanta.manage_vanta#ListDocumentsRequestStatusMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "statusMatchesAny", + "smithy.api#documentation": "Includes all documents that match one of the provided status values in statusMatchesAny." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ListDocuments": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListDocumentsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseDocument" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/documents", + "code": 200 + }, + "smithy.api#documentation": "List documents\n\nList documents." + } + }, + "com.vanta.manage_vanta#TimeSensitivity": { + "type": "enum", + "members": { + "MOST_RECENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MOST_RECENT" + } + }, + "DURING_AUDIT_WINDOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DURING_AUDIT_WINDOW" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#RecurrenceDuration": { + "type": "enum", + "members": { + "P0D": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P0D" + } + }, + "P1D": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1D" + } + }, + "P1W": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1W" + } + }, + "P1M": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1M" + } + }, + "P3M": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P3M" + } + }, + "P6M": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P6M" + } + }, + "P1Y": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1Y" + } + }, + "P2Y": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P2Y" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ReminderWindow": { + "type": "enum", + "members": { + "P0D": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P0D" + } + }, + "P1D": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1D" + } + }, + "P1W": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1W" + } + }, + "P1M": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P1M" + } + }, + "P3M": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "P3M" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CreateDocumentRequest": { + "type": "structure", + "members": { + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's title.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's description.", + "smithy.api#required": {} + } + }, + "timeSensitivity": { + "target": "com.vanta.manage_vanta#TimeSensitivity", + "traits": { + "smithy.api#documentation": "When to upload the document.\nMust be one of: \"Most recent\", \"During audit window\"", + "smithy.api#required": {} + } + }, + "cadence": { + "target": "com.vanta.manage_vanta#RecurrenceDuration", + "traits": { + "smithy.api#documentation": "How often the document needs to be renewed.\n\nNever: P0D - The document does not need to be renewed.\nDaily: P1D - The document needs to be renewed daily.\nWeekly: P1W - The document needs to be renewed weekly.\nMonthly: P1M - The document needs to be renewed monthly.\nQuarterly: P3M - The document needs to be renewed quarterly.\nBiannually: P6M - The document needs to be renewed biannually.\nAnnually: P1Y - The document needs to be renewed annually.", + "smithy.api#required": {} + } + }, + "reminderWindow": { + "target": "com.vanta.manage_vanta#ReminderWindow", + "traits": { + "smithy.api#documentation": "The number of days before the renewal date to send a reminder.\nNote that reminderWindow should be smaller than the cadence.\n\nOptions are:\nNever: P0D - No reminder will be sent.\nDay: P1D - A reminder will be sent one day before the renewal date.\nWeek: P1W - A reminder will be sent one week before the renewal date.\nMonth: P1M - A reminder will be sent one month before the renewal date.\nQuarter: P3M - A reminder will be sent one quarter before the renewal date.", + "smithy.api#required": {} + } + }, + "isSensitive": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Determines whether or not the document is sensitive.\nThis restricts which users can access or upload files to the document.\nOnly admins are able to view or upload sensitive documents.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateDocumentRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Document" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/documents", + "code": 200 + }, + "smithy.api#documentation": "Create a custom document\n\nCreate a custom document." + } + }, + "com.vanta.manage_vanta#GetDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DocumentDetail": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's unique ID.", + "smithy.api#required": {} + } + }, + "ownerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The user ID of the document's owner.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "category": { + "target": "com.vanta.manage_vanta#DocumentAndTestCategory", + "traits": { + "smithy.api#documentation": "The document's category.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's description.", + "smithy.api#required": {} + } + }, + "isSensitive": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Determines whether or not the document is sensitive.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's title.", + "smithy.api#required": {} + } + }, + "uploadStatus": { + "target": "com.vanta.manage_vanta#DocumentStatus", + "traits": { + "smithy.api#documentation": "The document's status.", + "smithy.api#required": {} + } + }, + "uploadStatusDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the document's uploadStatus changed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The URL to view the document within Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "deactivatedStatus": { + "target": "com.vanta.manage_vanta#DocumentDetailDeactivatedStatus", + "traits": { + "smithy.api#required": {} + } + }, + "note": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A user note for the document.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "nextRenewalDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the document needs to be renewed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "renewalCadence": { + "target": "com.vanta.manage_vanta#RecurrenceDuration", + "traits": { + "smithy.api#documentation": "How often a document must be renewed.", + "smithy.api#required": {} + } + }, + "reminderWindow": { + "target": "com.vanta.manage_vanta#ReminderWindow", + "traits": { + "smithy.api#documentation": "The number of day ahead of the renewal date to send a reminder.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "subscribers": { + "target": "com.vanta.manage_vanta#DocumentDetailSubscribersList", + "traits": { + "smithy.api#documentation": "A list of the emails subscribed to the document.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DocumentDetailDeactivatedStatus": { + "type": "structure", + "members": { + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the document was deactivated.", + "smithy.api#required": {} + } + }, + "expiration": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the deactivation expires.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The reason for the document was deactivated.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "isDeactivated": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Determines whether or not the document is deactivated.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DocumentDetailSubscribersList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "A list of the emails subscribed to the document." + } + }, + "com.vanta.manage_vanta#GetDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetDocumentRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#DocumentDetail" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/documents/{documentId}", + "code": 200 + }, + "smithy.api#documentation": "Get document by ID\n\nGet a document by ID." + } + }, + "com.vanta.manage_vanta#DeleteDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteDocumentRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/documents/{documentId}", + "code": 200 + }, + "smithy.api#documentation": "Delete document by ID\n\nDelete a document by ID." + } + }, + "com.vanta.manage_vanta#ListControlsForDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ListControlsForDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListControlsForDocumentRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseControl" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/documents/{documentId}/controls", + "code": 200 + }, + "smithy.api#documentation": "List document's controls\n\nList a document's associated controls." + } + }, + "com.vanta.manage_vanta#ListLinksForDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseUploadedLink": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseUploadedLinkResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UploadedLink": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The link's unique ID", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The link's creation date.", + "smithy.api#required": {} + } + }, + "effectiveDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The link's effective date.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The link's title.", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The link's URL.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The link's description.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseUploadedLinkResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#UploadedLink" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseUploadedLinkResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseUploadedLinkResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListLinksForDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListLinksForDocumentRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseUploadedLink" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/documents/{documentId}/links", + "code": 200 + }, + "smithy.api#documentation": "List document's links\n\nList the uploaded links for a document." + } + }, + "com.vanta.manage_vanta#CreateLinkForDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The link's URL", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The link's title.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The link's description.", + "com.distilled.openapi#nullable": {} + } + }, + "effectiveDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The link's effective date.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateLinkForDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateLinkForDocumentRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#UploadedLink" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/documents/{documentId}/links", + "code": 200 + }, + "smithy.api#documentation": "Create document link\n\nCreate a link for a document." + } + }, + "com.vanta.manage_vanta#DeleteLinkForDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "linkId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteLinkForDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteLinkForDocumentRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/documents/{documentId}/links/{linkId}", + "code": 200 + }, + "smithy.api#documentation": "Remove document link\n\nRemove a link from a document." + } + }, + "com.vanta.manage_vanta#SetOwnerForDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "userId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The new owner ID", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#SetOwnerForDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#SetOwnerForDocumentRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Document" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/documents/{documentId}/set-owner", + "code": 200 + }, + "smithy.api#documentation": "Set document owner\n\nAssign or unassign a user to the document." + } + }, + "com.vanta.manage_vanta#SubmitDocumentCollectionRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#SubmitDocumentCollection": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#SubmitDocumentCollectionRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/documents/{documentId}/submit", + "code": 200 + }, + "smithy.api#documentation": "Submit document collection\n\nSubmit document collection." + } + }, + "com.vanta.manage_vanta#ListFilesForDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseUploadedFileT": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseUploadedFileTResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UploadedFileT": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the document.", + "smithy.api#required": {} + } + }, + "fileName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The file name of the document.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's title.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's description", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "mimeType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Mime type of the document.", + "smithy.api#required": {} + } + }, + "uploadedBy": { + "target": "com.vanta.manage_vanta#UploadedFileTUploadedBy", + "traits": { + "smithy.api#documentation": "The actor who uploaded this document. It could be a user or an app.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date of when the document was uploaded.", + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the document was last updated.", + "smithy.api#required": {} + } + }, + "deletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date of when the document was deleted. Is set to null if the document has not been deleted.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "effectiveDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's effective date.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's URL.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UploadedDocumentUploadedByType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USER" + } + }, + "APPLICATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPLICATION" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UploadedFileTUploadedBy": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#UploadedDocumentUploadedByType", + "traits": { + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The actor who uploaded this document. It could be a user or an app." + } + }, + "com.vanta.manage_vanta#PaginatedResponseUploadedFileTResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#UploadedFileT" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseUploadedFileTResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseUploadedFileTResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListFilesForDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListFilesForDocumentRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseUploadedFileT" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/documents/{documentId}/uploads", + "code": 200 + }, + "smithy.api#documentation": "List document's uploads\n\nList the uploaded files for a document." + } + }, + "com.vanta.manage_vanta#UploadFileForDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "file": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "effectiveAtDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date indicating when the document is effective from." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the uploaded document." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UploadFileForDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UploadFileForDocumentRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#UploadedFileT" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/documents/{documentId}/uploads", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Upload file for document\n\nUpload a file for a document.", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#DeleteFileForDocumentRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "uploadedFileId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteFileForDocument": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteFileForDocumentRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/documents/{documentId}/uploads/{uploadedFileId}", + "code": 200 + }, + "smithy.api#documentation": "Delete file for a document\n\nDelete a file for a document." + } + }, + "com.vanta.manage_vanta#GetUploadedfileMediaRequest": { + "type": "structure", + "members": { + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "uploadedFileId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#NodeJSReadableStream": { + "type": "structure", + "members": { + "readable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetUploadedfileMedia": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetUploadedfileMediaRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#NodeJSReadableStream" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/documents/{documentId}/uploads/{uploadedFileId}/media", + "code": 200 + }, + "smithy.api#documentation": "Download file for document\n\nDownload a file from a document." + } + }, + "com.vanta.manage_vanta#ListEventLogsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "startDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "startDate", + "smithy.api#documentation": "Filter to event logs created at or after this ISO 8601 timestamp." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseEventLog": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseEventLogResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#EventLog": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The event log's unique ID.", + "smithy.api#required": {} + } + }, + "actor": { + "target": "com.vanta.manage_vanta#EventLogActor", + "traits": { + "smithy.api#documentation": "The event's initiator.", + "smithy.api#required": {} + } + }, + "date": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The event's creation date.", + "smithy.api#required": {} + } + }, + "action": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The event's action.", + "smithy.api#required": {} + } + }, + "targets": { + "target": "com.vanta.manage_vanta#EventLogTargetsList", + "traits": { + "smithy.api#documentation": "The list of targets of the event.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#EventLogActor": { + "type": "structure", + "members": { + "type": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The actor's type.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The actor's unique ID.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The event's initiator." + } + }, + "com.vanta.manage_vanta#EventLogTargetsItem": { + "type": "structure", + "members": { + "type": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The target's type.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The target's unique ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#EventLogTargetsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#EventLogTargetsItem" + }, + "traits": { + "smithy.api#documentation": "The list of targets of the event." + } + }, + "com.vanta.manage_vanta#PaginatedResponseEventLogResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#EventLog" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseEventLogResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseEventLogResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListEventLogs": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListEventLogsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseEventLog" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/event-logs", + "code": 200 + }, + "smithy.api#documentation": "List event logs\n\nList event logs.\n\nSee the [event log reference](/reference/manage-vanta/event-log-reference) for an inexhaustive list of `actor.type`, `action`, and `targets[].type` values." + } + }, + "com.vanta.manage_vanta#ListFrameworksRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseFramework": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseFrameworkResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Framework": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The framework's unique ID.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The framework's display name.", + "smithy.api#required": {} + } + }, + "shorthandName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The short version of the framework's display name.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The framework's description.", + "smithy.api#required": {} + } + }, + "numControlsCompleted": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of completed controls in the framework.", + "smithy.api#required": {} + } + }, + "numControlsTotal": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The total number of controls in the framework.", + "smithy.api#required": {} + } + }, + "numDocumentsPassing": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of passing documents in the framework.", + "smithy.api#required": {} + } + }, + "numDocumentsTotal": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The total number of documents in the framework.", + "smithy.api#required": {} + } + }, + "numTestsPassing": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of passing tests in the framework.", + "smithy.api#required": {} + } + }, + "numTestsTotal": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The total number of tests in the framework.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseFrameworkResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Framework" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseFrameworkResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseFrameworkResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListFrameworks": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListFrameworksRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseFramework" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/frameworks", + "code": 200 + }, + "smithy.api#documentation": "List available frameworks\n\nLists available frameworks." + } + }, + "com.vanta.manage_vanta#GetFrameworkRequest": { + "type": "structure", + "members": { + "frameworkId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#FrameworkDetail": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The framework's unique ID.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The framework's display name.", + "smithy.api#required": {} + } + }, + "shorthandName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The short version of the framework's display name.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The framework's description.", + "smithy.api#required": {} + } + }, + "numControlsCompleted": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of completed controls in the framework.", + "smithy.api#required": {} + } + }, + "numControlsTotal": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The total number of controls in the framework.", + "smithy.api#required": {} + } + }, + "numDocumentsPassing": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of passing documents in the framework.", + "smithy.api#required": {} + } + }, + "numDocumentsTotal": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The total number of documents in the framework.", + "smithy.api#required": {} + } + }, + "numTestsPassing": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of passing tests in the framework.", + "smithy.api#required": {} + } + }, + "numTestsTotal": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The total number of tests in the framework.", + "smithy.api#required": {} + } + }, + "requirementCategories": { + "target": "com.vanta.manage_vanta#FrameworkDetailRequirementCategoriesList", + "traits": { + "smithy.api#documentation": "The famework's list of requirement categories.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#FrameworkRequirementCategory": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The framework's requiremet category unique ID.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The framework's requiremet category name.", + "smithy.api#required": {} + } + }, + "shorthand": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The framework's short name.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "requirements": { + "target": "com.vanta.manage_vanta#FrameworkRequirementCategoryRequirementsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#FrameworkRequirementCategoryRequirementsItemControlsItem": { + "type": "structure", + "members": { + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's description.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's name.", + "smithy.api#required": {} + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's external ID.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's unique ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#FrameworkRequirementCategoryRequirementsItemControlsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#FrameworkRequirementCategoryRequirementsItemControlsItem" + }, + "traits": { + "smithy.api#documentation": "The requirement's list of controls" + } + }, + "com.vanta.manage_vanta#FrameworkRequirementCategoryRequirementsItem": { + "type": "structure", + "members": { + "controls": { + "target": "com.vanta.manage_vanta#FrameworkRequirementCategoryRequirementsItemControlsList", + "traits": { + "smithy.api#documentation": "The requirement's list of controls", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The requirement's description", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "shorthand": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The requirement's short name.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The requirement's name.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The requirement's unique ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#FrameworkRequirementCategoryRequirementsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#FrameworkRequirementCategoryRequirementsItem" + }, + "traits": {} + }, + "com.vanta.manage_vanta#FrameworkDetailRequirementCategoriesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#FrameworkRequirementCategory" + }, + "traits": { + "smithy.api#documentation": "The famework's list of requirement categories." + } + }, + "com.vanta.manage_vanta#GetFramework": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetFrameworkRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#FrameworkDetail" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/frameworks/{frameworkId}", + "code": 200 + }, + "smithy.api#documentation": "Get framework by ID\n\nGet a framework by ID." + } + }, + "com.vanta.manage_vanta#ListControlsForFrameworkRequest": { + "type": "structure", + "members": { + "frameworkId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ListControlsForFramework": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListControlsForFrameworkRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseControl" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/frameworks/{frameworkId}/controls", + "code": 200 + }, + "smithy.api#documentation": "List a framework's controls\n\nList a framework's controls." + } + }, + "com.vanta.manage_vanta#ListPersonGroupsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseGroup": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseGroupResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Group": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The group's unique ID.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The group's name.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The group's creation date.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The group's description.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "source": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The source that created the group. Manually created groups are set to \"Vanta\"; groups imported from an external source use that source's display name.", + "smithy.api#required": {} + } + }, + "personnelCount": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of personnel in the group.", + "smithy.api#required": {} + } + }, + "pointOfContact": { + "target": "com.vanta.manage_vanta#GroupPointOfContact", + "traits": { + "smithy.api#documentation": "The group's point of contact.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#GroupPointOfContact": { + "type": "structure", + "members": { + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The point of contact's email address.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The point of contact's display name.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The group's point of contact." + } + }, + "com.vanta.manage_vanta#PaginatedResponseGroupResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Group" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseGroupResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseGroupResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListPersonGroups": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListPersonGroupsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseGroup" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/groups", + "code": 200 + }, + "smithy.api#documentation": "List groups\n\nLists all groups by ID." + } + }, + "com.vanta.manage_vanta#CreateGroupRequest": { + "type": "structure", + "members": { + "pointOfContactEmail": { + "target": "smithy.api#String", + "traits": { + "com.distilled.openapi#nullable": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "com.distilled.openapi#nullable": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateGroup": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateGroupRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Group" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/groups", + "code": 200 + }, + "smithy.api#documentation": "Create group\n\nCreates a group." + } + }, + "com.vanta.manage_vanta#ImportIdpGroupsRequestIdpGroupIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IdP-group resource IDs to import." + } + }, + "com.vanta.manage_vanta#ImportIdpGroupsRequest": { + "type": "structure", + "members": { + "idpGroupIds": { + "target": "com.vanta.manage_vanta#ImportIdpGroupsRequestIdpGroupIdsList", + "traits": { + "smithy.api#documentation": "IdP-group resource IDs to import.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ImportIdpGroupsResponse": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ImportIdpGroupsResponseResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ImportIdpGroupResult": { + "type": "union", + "members": { + "ImportIdpGroupSuccess": { + "target": "com.vanta.manage_vanta#ImportIdpGroupSuccess" + }, + "ImportIdpGroupError": { + "target": "com.vanta.manage_vanta#ImportIdpGroupError" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ImportIdpGroupSuccess": { + "type": "structure", + "members": { + "idpGroupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#ImportIdpGroupSuccessStatus", + "traits": { + "smithy.api#required": {} + } + }, + "groupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ImportIdpGroupSuccessStatus": { + "type": "enum", + "members": { + "SUCCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SUCCESS" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ImportIdpGroupError": { + "type": "structure", + "members": { + "idpGroupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#ImportIdpGroupErrorStatus", + "traits": { + "smithy.api#required": {} + } + }, + "reason": { + "target": "com.vanta.manage_vanta#ImportIdpGroupFailureReason", + "traits": { + "smithy.api#required": {} + } + }, + "message": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ImportIdpGroupErrorStatus": { + "type": "enum", + "members": { + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ImportIdpGroupFailureReason": { + "type": "enum", + "members": { + "NOT_FOUND": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_FOUND" + } + }, + "IMPORT_FAILED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IMPORT_FAILED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ImportIdpGroupsResponseResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ImportIdpGroupResult" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ImportIdpGroups": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ImportIdpGroupsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ImportIdpGroupsResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/groups/import-from-idp", + "code": 200 + }, + "smithy.api#documentation": "Import IdP groups\n\nImports groups from an identity provider." + } + }, + "com.vanta.manage_vanta#ListImportableIdpGroupsRequestIntegrationIdList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListImportableIdpGroupsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search" + } + }, + "integrationId": { + "target": "com.vanta.manage_vanta#ListImportableIdpGroupsRequestIntegrationIdList", + "traits": { + "smithy.api#httpQuery": "integrationId" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedImportableIdpGroupResponse": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedImportableIdpGroupResponseResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ImportableIdpGroup": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "externalAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedImportableIdpGroupResponseResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ImportableIdpGroup" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedImportableIdpGroupResponseResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedImportableIdpGroupResponseResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListImportableIdpGroups": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListImportableIdpGroupsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedImportableIdpGroupResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/groups/importable-idp-groups", + "code": 200 + }, + "smithy.api#documentation": "List importable IdP groups\n\nLists IdP groups that are available to import." + } + }, + "com.vanta.manage_vanta#GetGroupRequest": { + "type": "structure", + "members": { + "groupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetGroup": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetGroupRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Group" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/groups/{groupId}", + "code": 200 + }, + "smithy.api#documentation": "Get group by ID\n\nGet a group by ID." + } + }, + "com.vanta.manage_vanta#AddPeopleToGroupRequestUpdatesItem": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AddPeopleToGroupRequestUpdatesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#AddPeopleToGroupRequestUpdatesItem" + }, + "traits": { + "smithy.api#documentation": "List of people IDs to add a group." + } + }, + "com.vanta.manage_vanta#AddPeopleToGroupRequest": { + "type": "structure", + "members": { + "groupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "updates": { + "target": "com.vanta.manage_vanta#AddPeopleToGroupRequestUpdatesList", + "traits": { + "smithy.api#documentation": "List of people IDs to add a group.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#BulkResponse": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#BulkResponseResultsList", + "traits": { + "smithy.api#documentation": "List of results matching the length and order of the request", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UpdateResponse": { + "type": "union", + "members": { + "SuccessResponse": { + "target": "com.vanta.manage_vanta#SuccessResponse" + }, + "NonSuccessResponse": { + "target": "com.vanta.manage_vanta#NonSuccessResponse" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#SuccessResponse": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Id of the record", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#ResultLineStatusSUCCESS", + "traits": { + "smithy.api#documentation": "Status of the requested update", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ResultLineStatusSUCCESS": { + "type": "enum", + "members": { + "SUCCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SUCCESS" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#NonSuccessResponse": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Id of the record", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#ResultLineStatusERROR", + "traits": { + "smithy.api#documentation": "Status of the requested update", + "smithy.api#required": {} + } + }, + "message": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Message an error message", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ResultLineStatusERROR": { + "type": "enum", + "members": { + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#BulkResponseResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#UpdateResponse" + }, + "traits": { + "smithy.api#documentation": "List of results matching the length and order of the request" + } + }, + "com.vanta.manage_vanta#AddPeopleToGroup": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddPeopleToGroupRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#BulkResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/groups/{groupId}/add-people", + "code": 200 + }, + "smithy.api#documentation": "Add people to group\n\nAdd people to a group." + } + }, + "com.vanta.manage_vanta#GetGroupMembersRequest": { + "type": "structure", + "members": { + "groupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#Person": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "userId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The ID of the Vanta user account associated with this person, if one exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "emailAddress": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "employment": { + "target": "com.vanta.manage_vanta#PersonEmployment", + "traits": { + "smithy.api#required": {} + } + }, + "leaveInfo": { + "target": "com.vanta.manage_vanta#LeaveInfo", + "traits": { + "smithy.api#documentation": "If present, the user's active/upcoming leave. Empty if the user has no active/upcoming leave.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "groupIds": { + "target": "com.vanta.manage_vanta#PersonGroupIdsList", + "traits": { + "smithy.api#documentation": "The id of each group the user belongs to. This includes both manually created groups in Vanta and groups imported from an identity provider.", + "smithy.api#required": {} + } + }, + "name": { + "target": "com.vanta.manage_vanta#PersonName", + "traits": { + "smithy.api#required": {} + } + }, + "sources": { + "target": "com.vanta.manage_vanta#PersonSources", + "traits": { + "smithy.api#documentation": "The sources of the person's information.", + "smithy.api#required": {} + } + }, + "tasksSummary": { + "target": "com.vanta.manage_vanta#PersonTasksSummary", + "traits": { + "smithy.api#documentation": "The person's tasks summary, which aggregates their current status across\nall of their relevant tasks.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#EmploymentStatus": { + "type": "enum", + "members": { + "UPCOMING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UPCOMING" + } + }, + "CURRENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CURRENT" + } + }, + "ON_LEAVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ON_LEAVE" + } + }, + "INACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INACTIVE" + } + }, + "FORMER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FORMER" + } + } + }, + "traits": { + "smithy.api#documentation": "The employment status of a person:\n- UPCOMING: The person is not yet employed and will start employment in the future.\n- CURRENT: The person is currently employed.\n- ON_LEAVE: The person is on leave.\n- INACTIVE: The person's employment is inactive.\n- FORMER: The person was previously employed." + } + }, + "com.vanta.manage_vanta#PersonEmployment": { + "type": "structure", + "members": { + "status": { + "target": "com.vanta.manage_vanta#EmploymentStatus", + "traits": { + "smithy.api#documentation": "The person's employment status.", + "smithy.api#required": {} + } + }, + "startDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the person's employment started.", + "smithy.api#required": {} + } + }, + "jobTitle": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The person's job title.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "endDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "If present, the date the person's employment ended.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#LeaveInfo": { + "type": "structure", + "members": { + "startDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The start of the person's leave.", + "smithy.api#required": {} + } + }, + "endDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The end of the person's leave. Null endDate implies indefinite leave.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#LeaveStatus", + "traits": { + "smithy.api#documentation": "ACTIVE if the leave is currently ongoing. UPCOMING if the startDate is in the future.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#LeaveStatus": { + "type": "enum", + "members": { + "ACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACTIVE" + } + }, + "UPCOMING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UPCOMING" + } + } + }, + "traits": { + "smithy.api#documentation": "User can be active or upcoming leave period" + } + }, + "com.vanta.manage_vanta#PersonGroupIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The id of each group the user belongs to. This includes both manually created groups in Vanta and groups imported from an identity provider." + } + }, + "com.vanta.manage_vanta#PersonName": { + "type": "structure", + "members": { + "first": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The person's first (given) name.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "last": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The person's last (family) name.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "display": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The person's display name, used in Vanta.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PersonInfoSource": { + "type": "union", + "members": { + "VantaBasedPersonInfoSource": { + "target": "com.vanta.manage_vanta#VantaBasedPersonInfoSource" + }, + "ScimBasedPersonInfoSource": { + "target": "com.vanta.manage_vanta#ScimBasedPersonInfoSource" + }, + "IntegrationBasedPersonInfoSource": { + "target": "com.vanta.manage_vanta#IntegrationBasedPersonInfoSource" + } + }, + "traits": { + "smithy.api#documentation": "The source of the person's information." + } + }, + "com.vanta.manage_vanta#VantaBasedPersonInfoSource": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#PersonInfoSourceTypeVANTA", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The person's information comes from what is set in Vanta." + } + }, + "com.vanta.manage_vanta#PersonInfoSourceTypeVANTA": { + "type": "enum", + "members": { + "VANTA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VANTA" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ScimBasedPersonInfoSource": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#PersonInfoSourceTypeSCIM", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The person's information comes from SCIM." + } + }, + "com.vanta.manage_vanta#PersonInfoSourceTypeSCIM": { + "type": "enum", + "members": { + "SCIM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SCIM" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#IntegrationBasedPersonInfoSource": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "type": { + "target": "com.vanta.manage_vanta#PersonInfoSourceTypeINTEGRATION", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The person's information comes from an integration." + } + }, + "com.vanta.manage_vanta#PersonInfoSourceTypeINTEGRATION": { + "type": "enum", + "members": { + "INTEGRATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INTEGRATION" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PersonSourcesEmployment": { + "type": "structure", + "members": { + "endDate": { + "target": "com.vanta.manage_vanta#PersonInfoSource", + "traits": { + "smithy.api#documentation": "The source of the person's employment end date.", + "smithy.api#required": {} + } + }, + "startDate": { + "target": "com.vanta.manage_vanta#PersonInfoSource", + "traits": { + "smithy.api#documentation": "The source of the person's employment start date.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PersonSources": { + "type": "structure", + "members": { + "employment": { + "target": "com.vanta.manage_vanta#PersonSourcesEmployment", + "traits": { + "smithy.api#required": {} + } + }, + "emailAddress": { + "target": "com.vanta.manage_vanta#PersonInfoSource", + "traits": { + "smithy.api#documentation": "The source of the person's email address.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The sources of the person's information." + } + }, + "com.vanta.manage_vanta#TaskSummaryDetails": { + "type": "structure", + "members": { + "completeTrainings": { + "target": "com.vanta.manage_vanta#CompleteTrainingsTaskSummary", + "traits": { + "smithy.api#required": {} + } + }, + "acceptPolicies": { + "target": "com.vanta.manage_vanta#AcceptPoliciesTaskSummary", + "traits": { + "smithy.api#required": {} + } + }, + "completeCustomTasks": { + "target": "com.vanta.manage_vanta#CompleteCustomTasksTaskSummary", + "traits": { + "smithy.api#required": {} + } + }, + "completeOffboardingCustomTasks": { + "target": "com.vanta.manage_vanta#CompleteOffboardingCustomTasksTaskSummary", + "traits": { + "smithy.api#required": {} + } + }, + "installDeviceMonitoring": { + "target": "com.vanta.manage_vanta#InstallDeviceMonitoringTaskSummary", + "traits": { + "smithy.api#required": {} + } + }, + "completeBackgroundChecks": { + "target": "com.vanta.manage_vanta#CompleteBackgroundChecksTaskSummary", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "All detailed information about a person's tasks, split across task categories." + } + }, + "com.vanta.manage_vanta#CompleteTrainingsTaskSummary": { + "type": "structure", + "members": { + "taskType": { + "target": "com.vanta.manage_vanta#TaskTypeCOMPLETETRAININGS", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#TaskStatus", + "traits": { + "smithy.api#required": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The due date of the task.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the task was completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "disabled": { + "target": "com.vanta.manage_vanta#CompleteTrainingsTaskSummaryDisabled", + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "incompleteTrainings": { + "target": "com.vanta.manage_vanta#CompleteTrainingsTaskSummaryIncompleteTrainingsList", + "traits": { + "smithy.api#documentation": "Incomplete security trainings that are relevant given a person's requirements.", + "smithy.api#required": {} + } + }, + "completedTrainings": { + "target": "com.vanta.manage_vanta#CompleteTrainingsTaskSummaryCompletedTrainingsList", + "traits": { + "smithy.api#documentation": "Security trainings that have been completed and are relevant given a person's current requirements.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Task summary for completing all trainings." + } + }, + "com.vanta.manage_vanta#TaskTypeCOMPLETETRAININGS": { + "type": "enum", + "members": { + "COMPLETE_TRAININGS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE_TRAININGS" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TaskStatus": { + "type": "enum", + "members": { + "COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE" + } + }, + "DUE_SOON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DUE_SOON" + } + }, + "OVERDUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OVERDUE" + } + }, + "NONE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NONE" + } + } + }, + "traits": { + "smithy.api#documentation": "The status of a task.\n- COMPLETE: The task has been completed.\n- DUE_SOON: The task is due soon.\n- OVERDUE: The task is overdue.\n- NONE: The task is not assigned." + } + }, + "com.vanta.manage_vanta#CompleteTrainingsTaskSummaryDisabled": { + "type": "structure", + "members": { + "date": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled." + } + }, + "com.vanta.manage_vanta#Training": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A person's security training." + } + }, + "com.vanta.manage_vanta#CompleteTrainingsTaskSummaryIncompleteTrainingsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Training" + }, + "traits": { + "smithy.api#documentation": "Incomplete security trainings that are relevant given a person's requirements." + } + }, + "com.vanta.manage_vanta#CompleteTrainingsTaskSummaryCompletedTrainingsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Training" + }, + "traits": { + "smithy.api#documentation": "Security trainings that have been completed and are relevant given a person's current requirements." + } + }, + "com.vanta.manage_vanta#AcceptPoliciesTaskSummary": { + "type": "structure", + "members": { + "taskType": { + "target": "com.vanta.manage_vanta#TaskTypeACCEPTPOLICIES", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#TaskStatus", + "traits": { + "smithy.api#required": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The due date of the task.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the task was completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "disabled": { + "target": "com.vanta.manage_vanta#AcceptPoliciesTaskSummaryDisabled", + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "unacceptedPolicies": { + "target": "com.vanta.manage_vanta#AcceptPoliciesTaskSummaryUnacceptedPoliciesList", + "traits": { + "smithy.api#documentation": "Unaccepted policies that are relevant to the person.", + "smithy.api#required": {} + } + }, + "acceptedPolicies": { + "target": "com.vanta.manage_vanta#AcceptPoliciesTaskSummaryAcceptedPoliciesList", + "traits": { + "smithy.api#documentation": "Accepted policies that are relevant to the person.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Policy acceptance details for a person." + } + }, + "com.vanta.manage_vanta#TaskTypeACCEPTPOLICIES": { + "type": "enum", + "members": { + "ACCEPT_POLICIES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCEPT_POLICIES" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AcceptPoliciesTaskSummaryDisabled": { + "type": "structure", + "members": { + "date": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled." + } + }, + "com.vanta.manage_vanta#AcceptPoliciesTaskSummaryUnacceptedPoliciesItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AcceptPoliciesTaskSummaryUnacceptedPoliciesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#AcceptPoliciesTaskSummaryUnacceptedPoliciesItem" + }, + "traits": { + "smithy.api#documentation": "Unaccepted policies that are relevant to the person." + } + }, + "com.vanta.manage_vanta#AcceptPoliciesTaskSummaryAcceptedPoliciesItem": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AcceptPoliciesTaskSummaryAcceptedPoliciesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#AcceptPoliciesTaskSummaryAcceptedPoliciesItem" + }, + "traits": { + "smithy.api#documentation": "Accepted policies that are relevant to the person." + } + }, + "com.vanta.manage_vanta#CompleteCustomTasksTaskSummary": { + "type": "structure", + "members": { + "taskType": { + "target": "com.vanta.manage_vanta#TaskTypeCOMPLETECUSTOMTASKS", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#TaskStatus", + "traits": { + "smithy.api#required": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The due date of the task.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the task was completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "disabled": { + "target": "com.vanta.manage_vanta#CompleteCustomTasksTaskSummaryDisabled", + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "incompleteCustomTasks": { + "target": "com.vanta.manage_vanta#CompleteCustomTasksTaskSummaryIncompleteCustomTasksList", + "traits": { + "smithy.api#documentation": "Incomplete custom tasks that are relevant given a person's requirements.", + "smithy.api#required": {} + } + }, + "completedCustomTasks": { + "target": "com.vanta.manage_vanta#CompleteCustomTasksTaskSummaryCompletedCustomTasksList", + "traits": { + "smithy.api#documentation": "Custom tasks that have been completed and are relevant given a person's current requirements.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Task summary for completing all custom tasks." + } + }, + "com.vanta.manage_vanta#TaskTypeCOMPLETECUSTOMTASKS": { + "type": "enum", + "members": { + "COMPLETE_CUSTOM_TASKS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE_CUSTOM_TASKS" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CompleteCustomTasksTaskSummaryDisabled": { + "type": "structure", + "members": { + "date": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled." + } + }, + "com.vanta.manage_vanta#CustomTask": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A custom task." + } + }, + "com.vanta.manage_vanta#CompleteCustomTasksTaskSummaryIncompleteCustomTasksList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomTask" + }, + "traits": { + "smithy.api#documentation": "Incomplete custom tasks that are relevant given a person's requirements." + } + }, + "com.vanta.manage_vanta#CompleteCustomTasksTaskSummaryCompletedCustomTasksList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomTask" + }, + "traits": { + "smithy.api#documentation": "Custom tasks that have been completed and are relevant given a person's current requirements." + } + }, + "com.vanta.manage_vanta#CompleteOffboardingCustomTasksTaskSummary": { + "type": "structure", + "members": { + "taskType": { + "target": "com.vanta.manage_vanta#TaskTypeCOMPLETECUSTOMOFFBOARDINGTASKS", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#TaskStatus", + "traits": { + "smithy.api#required": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The due date of the task.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the task was completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "disabled": { + "target": "com.vanta.manage_vanta#CompleteOffboardingCustomTasksTaskSummaryDisabled", + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "incompleteCustomOffboardingTasks": { + "target": "com.vanta.manage_vanta#CompleteOffboardingCustomTasksTaskSummaryIncompleteCustomOffboardingTasksList", + "traits": { + "smithy.api#documentation": "Incomplete custom tasks that are relevant given a person's requirements.", + "smithy.api#required": {} + } + }, + "completedCustomOffboardingTasks": { + "target": "com.vanta.manage_vanta#CompleteOffboardingCustomTasksTaskSummaryCompletedCustomOffboardingTasksList", + "traits": { + "smithy.api#documentation": "Custom tasks that have been completed and are relevant given a person's current requirements.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Task summary for completing all offboarding custom tasks." + } + }, + "com.vanta.manage_vanta#TaskTypeCOMPLETECUSTOMOFFBOARDINGTASKS": { + "type": "enum", + "members": { + "COMPLETE_CUSTOM_OFFBOARDING_TASKS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE_CUSTOM_OFFBOARDING_TASKS" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CompleteOffboardingCustomTasksTaskSummaryDisabled": { + "type": "structure", + "members": { + "date": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled." + } + }, + "com.vanta.manage_vanta#CompleteOffboardingCustomTasksTaskSummaryIncompleteCustomOffboardingTasksList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomTask" + }, + "traits": { + "smithy.api#documentation": "Incomplete custom tasks that are relevant given a person's requirements." + } + }, + "com.vanta.manage_vanta#CompleteOffboardingCustomTasksTaskSummaryCompletedCustomOffboardingTasksList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomTask" + }, + "traits": { + "smithy.api#documentation": "Custom tasks that have been completed and are relevant given a person's current requirements." + } + }, + "com.vanta.manage_vanta#InstallDeviceMonitoringTaskSummary": { + "type": "structure", + "members": { + "taskType": { + "target": "com.vanta.manage_vanta#TaskTypeINSTALLDEVICEMONITORING", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#TaskStatus", + "traits": { + "smithy.api#required": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The due date of the task.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the task was completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "disabled": { + "target": "com.vanta.manage_vanta#InstallDeviceMonitoringTaskSummaryDisabled", + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Task summary for installing device monitoring." + } + }, + "com.vanta.manage_vanta#TaskTypeINSTALLDEVICEMONITORING": { + "type": "enum", + "members": { + "INSTALL_DEVICE_MONITORING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INSTALL_DEVICE_MONITORING" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#InstallDeviceMonitoringTaskSummaryDisabled": { + "type": "structure", + "members": { + "date": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled." + } + }, + "com.vanta.manage_vanta#CompleteBackgroundChecksTaskSummary": { + "type": "structure", + "members": { + "taskType": { + "target": "com.vanta.manage_vanta#TaskTypeCOMPLETEBACKGROUNDCHECKS", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#TaskStatus", + "traits": { + "smithy.api#required": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The due date of the task.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the task was completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "disabled": { + "target": "com.vanta.manage_vanta#CompleteBackgroundChecksTaskSummaryDisabled", + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Task summary for completing background checks." + } + }, + "com.vanta.manage_vanta#TaskTypeCOMPLETEBACKGROUNDCHECKS": { + "type": "enum", + "members": { + "COMPLETE_BACKGROUND_CHECKS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE_BACKGROUND_CHECKS" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CompleteBackgroundChecksTaskSummaryDisabled": { + "type": "structure", + "members": { + "date": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "If the task is disabled, the reason and date when it was disabled." + } + }, + "com.vanta.manage_vanta#TasksSummaryStatus": { + "type": "enum", + "members": { + "COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE" + } + }, + "DUE_SOON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DUE_SOON" + } + }, + "NONE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NONE" + } + }, + "OFFBOARDING_COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFFBOARDING_COMPLETE" + } + }, + "OFFBOARDING_DUE_SOON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFFBOARDING_DUE_SOON" + } + }, + "OFFBOARDING_OVERDUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OFFBOARDING_OVERDUE" + } + }, + "OVERDUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OVERDUE" + } + }, + "PAUSED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PAUSED" + } + } + }, + "traits": { + "smithy.api#documentation": "The overall status of a person's outstanding tasks:\n- NONE: There are no tasks.\n- DUE_SOON: At least one task is due soon.\n- OVERDUE: At least one task is overdue. Has a higher priority than DUE_SOON.\n- COMPLETE: All tasks are complete.\n- PAUSED: All tasks are paused.\n- OFFBOARDING_DUE_SOON: At least one offboarding task is due soon.\n- OFFBOARDING_OVERDUE: At least one offboarding task is overdue. Has a higher priority than OFFBOARDING_DUE_SOON.\n- OFFBOARDING_COMPLETE: All offboarding tasks are complete." + } + }, + "com.vanta.manage_vanta#PersonTasksSummary": { + "type": "structure", + "members": { + "details": { + "target": "com.vanta.manage_vanta#TaskSummaryDetails", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#TasksSummaryStatus", + "traits": { + "smithy.api#documentation": "The status of the person's tasks summary.", + "smithy.api#required": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The due date of the person's earliest-due task.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date when person's tasks were completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The person's tasks summary, which aggregates their current status across\nall of their relevant tasks." + } + }, + "com.vanta.manage_vanta#GetGroupMembersResponseBodyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Person" + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetGroupMembersResponse": { + "type": "structure", + "members": { + "body": { + "target": "com.vanta.manage_vanta#GetGroupMembersResponseBodyList", + "traits": { + "com.distilled.openapi#rawResponse": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.manage_vanta#GetGroupMembers": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetGroupMembersRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#GetGroupMembersResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/groups/{groupId}/people", + "code": 200 + }, + "smithy.api#documentation": "List people in a group\n\nList people in a group." + } + }, + "com.vanta.manage_vanta#AddPersonToGroupRequest": { + "type": "structure", + "members": { + "groupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#AddPersonToGroup": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddPersonToGroupRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Person" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/groups/{groupId}/people", + "code": 200 + }, + "smithy.api#documentation": "Add person to a group\n\nAdd a single person, by ID, to a group." + } + }, + "com.vanta.manage_vanta#RemovePersonFromGroupRequest": { + "type": "structure", + "members": { + "groupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "personId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#RemovePersonFromGroup": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#RemovePersonFromGroupRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Person" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/groups/{groupId}/people/{personId}", + "code": 200 + }, + "smithy.api#documentation": "Remove person from a group\n\nRemove a single person, by ID, from a group." + } + }, + "com.vanta.manage_vanta#RemovePeopleFromGroupRequestUpdatesItem": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#RemovePeopleFromGroupRequestUpdatesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#RemovePeopleFromGroupRequestUpdatesItem" + }, + "traits": { + "smithy.api#documentation": "List of people IDs to remove from a group." + } + }, + "com.vanta.manage_vanta#RemovePeopleFromGroupRequest": { + "type": "structure", + "members": { + "groupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "updates": { + "target": "com.vanta.manage_vanta#RemovePeopleFromGroupRequestUpdatesList", + "traits": { + "smithy.api#documentation": "List of people IDs to remove from a group.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#RemovePeopleFromGroup": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#RemovePeopleFromGroupRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#BulkResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/groups/{groupId}/remove-people", + "code": 200 + }, + "smithy.api#documentation": "Remove people from group\n\nRemove people from a group." + } + }, + "com.vanta.manage_vanta#ListConnectedIntegrationsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseIntegration": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseIntegrationResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Integration": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A unique identifier for the Integration.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Integration's display name.", + "smithy.api#required": {} + } + }, + "resourceKinds": { + "target": "com.vanta.manage_vanta#IntegrationResourceKindsList", + "traits": { + "smithy.api#documentation": "A list of string identifiers for the resource types ingested by the Integration.", + "smithy.api#required": {} + } + }, + "connections": { + "target": "com.vanta.manage_vanta#IntegrationConnectionsList", + "traits": { + "smithy.api#documentation": "A list of installed Connections.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#IntegrationResourceKindsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "A list of string identifiers for the resource types ingested by the Integration." + } + }, + "com.vanta.manage_vanta#Connection": { + "type": "structure", + "members": { + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection.", + "smithy.api#required": {} + } + }, + "isDisabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Connection has been disabled by Vanta.", + "smithy.api#required": {} + } + }, + "connectionErrorMessage": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "An error message that may accompany disabled Connections.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#IntegrationConnectionsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Connection" + }, + "traits": { + "smithy.api#documentation": "A list of installed Connections." + } + }, + "com.vanta.manage_vanta#PaginatedResponseIntegrationResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Integration" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseIntegrationResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseIntegrationResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListConnectedIntegrations": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListConnectedIntegrationsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseIntegration" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/integrations", + "code": 200 + }, + "smithy.api#documentation": "List connected integrations\n\nLists all integrations connected to a Vanta instance." + } + }, + "com.vanta.manage_vanta#GetConnectedIntegrationRequest": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetConnectedIntegration": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetConnectedIntegrationRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Integration" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/integrations/{integrationId}", + "code": 200 + }, + "smithy.api#documentation": "Get a connected integration\n\nGets details for a specific integration by connection ID." + } + }, + "com.vanta.manage_vanta#ListResourceKindSummariesRequest": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ResourceKindSummary": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Integration that ingests this resource.", + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "isScopable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether resources of this type may be scoped out of an audit.", + "smithy.api#required": {} + } + }, + "canUpdateDescription": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether resources of this type may be assigned a description.", + "smithy.api#required": {} + } + }, + "canUpdateOwner": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether resources of this type may be assigned an owner.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListResourceKindSummariesResponseBodyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ResourceKindSummary" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListResourceKindSummariesResponse": { + "type": "structure", + "members": { + "body": { + "target": "com.vanta.manage_vanta#ListResourceKindSummariesResponseBodyList", + "traits": { + "com.distilled.openapi#rawResponse": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.manage_vanta#ListResourceKindSummaries": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListResourceKindSummariesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ListResourceKindSummariesResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/integrations/{integrationId}/resource-kinds", + "code": 200 + }, + "smithy.api#documentation": "List integration resource kinds\n\nLists a connected integration's resource types (kinds) such as S3Bucket or CloudwatchLogGroup." + } + }, + "com.vanta.manage_vanta#GetResourceKindDetailsRequest": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration." + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration resource kind." + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "connectionId", + "smithy.api#documentation": "Unique identifier of the integration connection." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ResourceKindDetails": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Integration that ingests this resource.", + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "isScopable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether resources of this type may be scoped out of an audit.", + "smithy.api#required": {} + } + }, + "canUpdateDescription": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether resources of this type may be assigned a description.", + "smithy.api#required": {} + } + }, + "canUpdateOwner": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether resources of this type may be assigned an owner.", + "smithy.api#required": {} + } + }, + "numResources": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The count of resources of the given type.", + "smithy.api#required": {} + } + }, + "numInScope": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The count of resources of the given type that are in scope for audits.", + "smithy.api#required": {} + } + }, + "numOwned": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The count of resources of the given type that have been assigned an owner in Vanta.", + "smithy.api#required": {} + } + }, + "numWithDescription": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "The count of resources of the given type that have been given a description in Vanta.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetResourceKindDetails": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetResourceKindDetailsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ResourceKindDetails" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/integrations/{integrationId}/resource-kinds/{resourceKind}", + "code": 200 + }, + "smithy.api#documentation": "Get details for resource kind\n\nGets details for a specific resource type (kind) such as S3Bucket or CloudwatchLogGroup." + } + }, + "com.vanta.manage_vanta#ListResourcesRequest": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration." + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration resource type." + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "connectionId", + "smithy.api#documentation": "Unique identifier of the integration connection." + } + }, + "hasDescription": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "hasDescription", + "smithy.api#documentation": "Filter resources that have a description.\nIf omitted, this will return resources both with and without a description." + } + }, + "hasOwner": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "hasOwner", + "smithy.api#documentation": "Filter resources that have an owner.\nIf omitted, this will return resources both with and without an owner." + } + }, + "isInScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "isInScope", + "smithy.api#documentation": "Filter resources that are in scope.\nIf omitted, this will return resources both in and out of scope." + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseAnyResource": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseAnyResourceResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AnyResource": { + "type": "union", + "members": { + "Resource": { + "target": "com.vanta.manage_vanta#Resource" + }, + "CloudInfrastructure": { + "target": "com.vanta.manage_vanta#CloudInfrastructure" + }, + "ContainerRepository": { + "target": "com.vanta.manage_vanta#ContainerRepository" + }, + "Database": { + "target": "com.vanta.manage_vanta#Database" + }, + "Device": { + "target": "com.vanta.manage_vanta#Device" + }, + "PaaS": { + "target": "com.vanta.manage_vanta#PaaS" + }, + "Queue": { + "target": "com.vanta.manage_vanta#Queue" + }, + "StorageBucket": { + "target": "com.vanta.manage_vanta#StorageBucket" + }, + "Account": { + "target": "com.vanta.manage_vanta#Account" + }, + "AwsAccount": { + "target": "com.vanta.manage_vanta#AwsAccount" + }, + "OrganizationSubunit": { + "target": "com.vanta.manage_vanta#OrganizationSubunit" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Resource": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ResourceResponseType": { + "type": "enum", + "members": { + "ACCOUNT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Account" + } + }, + "AUTOSCALINGGROUP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AutoScalingGroup" + } + }, + "CLUSTERDEPLOYMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ClusterDeployment" + } + }, + "COMPUTEINSTANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ComputeInstance" + } + }, + "CONTAINERCLUSTER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ContainerCluster" + } + }, + "CONTAINERREPOSITORY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ContainerRepository" + } + }, + "DATABASE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Database" + } + }, + "DEVICE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Device" + } + }, + "GITREPOSITORY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GitRepository" + } + }, + "KUBERNETESCLUSTER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KubernetesCluster" + } + }, + "LOADBALANCER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LoadBalancer" + } + }, + "PAAS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PaaS" + } + }, + "RESOURCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Resource" + } + }, + "QUEUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Queue" + } + }, + "SERVERLESSFUNCTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ServerlessFunction" + } + }, + "STORAGEBUCKET": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "StorageBucket" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CloudInfrastructure": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + }, + "account": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the account associated with the Resource", + "smithy.api#required": {} + } + }, + "region": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Region in which the Resource is located", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ContainerRepository": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + }, + "account": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the account associated with the Resource", + "smithy.api#required": {} + } + }, + "region": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Region in which the Resource is located", + "smithy.api#required": {} + } + }, + "isAutoscanEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether autoscans have been enabled", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Database": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + }, + "account": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the account associated with the Database", + "smithy.api#required": {} + } + }, + "areBackupsEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether backups are enabled for the Database", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "isEncrypted": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Database is encrypted", + "smithy.api#required": {} + } + }, + "containsEphi": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Database contains Ephi", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "containsUserData": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Database contains user data", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Device": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + }, + "operatingSystemName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the operating system", + "smithy.api#required": {} + } + }, + "isEncrypted": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Device is encrypted", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "containsEphi": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Device contains Ephi", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "containsUserData": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Device contains user data", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaaS": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + }, + "containsEphi": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the PaaS contains Ephi", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "containsUserData": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the PaaS contains user data", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Queue": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + }, + "account": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the account associated with the Resource", + "smithy.api#required": {} + } + }, + "region": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Region in which the Resource is located", + "smithy.api#required": {} + } + }, + "containsEphi": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Queue contains Ephi", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "containsUserData": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Queue contains user data", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#StorageBucket": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + }, + "account": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the account associated with the Resource", + "smithy.api#required": {} + } + }, + "region": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Region in which the Resource is located", + "smithy.api#required": {} + } + }, + "isEncrypted": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the StorageBucket is encrypted", + "smithy.api#required": {} + } + }, + "containsEphi": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the StorageBucket contains Ephi", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "containsUserData": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the StorageBucket contains user data", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "isVersioned": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the StorageBucket is versioned", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Account": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + }, + "accountName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name associated with the Account", + "smithy.api#required": {} + } + }, + "roles": { + "target": "com.vanta.manage_vanta#AccountRolesList", + "traits": { + "smithy.api#documentation": "Any role(s) assigned to the Account", + "smithy.api#required": {} + } + }, + "groups": { + "target": "com.vanta.manage_vanta#AccountGroupsList", + "traits": { + "smithy.api#documentation": "Any groups to which the Account belongs", + "smithy.api#required": {} + } + }, + "isDeactivated": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the account has been deactivated/disabled/deleted.", + "smithy.api#required": {} + } + }, + "isMfaEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether MFA has been enabled for the account.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AccountRolesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Any role(s) assigned to the Account" + } + }, + "com.vanta.manage_vanta#AccountGroupsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Any groups to which the Account belongs" + } + }, + "com.vanta.manage_vanta#AwsAccount": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + }, + "accountName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name associated with the Account", + "smithy.api#required": {} + } + }, + "roles": { + "target": "com.vanta.manage_vanta#AwsAccountRolesList", + "traits": { + "smithy.api#documentation": "Any role(s) assigned to the Account", + "smithy.api#required": {} + } + }, + "groups": { + "target": "com.vanta.manage_vanta#AwsAccountGroupsList", + "traits": { + "smithy.api#documentation": "Any groups to which the Account belongs", + "smithy.api#required": {} + } + }, + "isDeactivated": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the account has been deactivated/disabled/deleted.", + "smithy.api#required": {} + } + }, + "isMfaEnabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether MFA has been enabled for the account.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "awsUserAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The AWS user account ID associated with the account", + "smithy.api#required": {} + } + }, + "awsAccountNumber": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "AWS account number (12 digit number) that uniquely identifies your AWS account", + "smithy.api#required": {} + } + }, + "accessKeys": { + "target": "com.vanta.manage_vanta#AwsAccountAccessKeysList", + "traits": { + "smithy.api#documentation": "The list of access keys associated with the AWS account", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AwsAccountRolesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Any role(s) assigned to the Account" + } + }, + "com.vanta.manage_vanta#AwsAccountGroupsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Any groups to which the Account belongs" + } + }, + "com.vanta.manage_vanta#AccessKeyInfo": { + "type": "structure", + "members": { + "accessKeyId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The access key ID", + "smithy.api#required": {}, + "smithy.api#sensitive": {} + } + }, + "status": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The status of the access key", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AwsAccountAccessKeysList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#AccessKeyInfo" + }, + "traits": { + "smithy.api#documentation": "The list of access keys associated with the AWS account" + } + }, + "com.vanta.manage_vanta#OrganizationSubunit": { + "type": "structure", + "members": { + "responseType": { + "target": "com.vanta.manage_vanta#ResourceResponseType", + "traits": { + "smithy.api#required": {} + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the resource type, unique within the scope of an Integration.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Resource.", + "smithy.api#required": {} + } + }, + "connectionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the Connection used to ingest the Resource if it exists.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Resource's display name.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier for the owner of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource is in scope for audits.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the resource in Vanta.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When Vanta first ingested the Resource.", + "smithy.api#required": {} + } + }, + "deletedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the resource was deleted/removed from the integration, if applicable.\nThis field is only present when the resource has been deleted.", + "com.distilled.openapi#nullable": {} + } + }, + "accountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Account ID corresponding to the subunit. Could be null if the subunit is not an account, e.g. a subscription", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseAnyResourceResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#AnyResource" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseAnyResourceResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseAnyResourceResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListResources": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListResourcesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseAnyResource" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/integrations/{integrationId}/resource-kinds/{resourceKind}/resources", + "code": 200 + }, + "smithy.api#documentation": "List resources\n\nLists resources for a specific integration and resource type (kind) such as S3Bucket or CloudwatchLogGroup." + } + }, + "com.vanta.manage_vanta#UpdateResourceRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the resource to update.", + "smithy.api#required": {} + } + }, + "ownerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Owner ID to update for the resource." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description to update for the resource." + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Determines whether resources should be marked in scope or not." + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UpdateResourcesRequestUpdatesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#UpdateResourceRequest" + }, + "traits": { + "smithy.api#documentation": "List of resource update requests." + } + }, + "com.vanta.manage_vanta#UpdateResourcesRequest": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration." + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration resource kind." + } + }, + "updates": { + "target": "com.vanta.manage_vanta#UpdateResourcesRequestUpdatesList", + "traits": { + "smithy.api#documentation": "List of resource update requests.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateResources": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateResourcesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#BulkResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/integrations/{integrationId}/resource-kinds/{resourceKind}/resources", + "code": 200 + }, + "smithy.api#documentation": "Update resource metadata\n\nUpdates metadata for multiple resources." + } + }, + "com.vanta.manage_vanta#GetResourceRequest": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration." + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration resource kind." + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the resource." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetResourceResponse": { + "type": "structure", + "members": { + "body": { + "target": "com.vanta.manage_vanta#AnyResource", + "traits": { + "com.distilled.openapi#rawResponse": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.manage_vanta#GetResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetResourceRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#GetResourceResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/integrations/{integrationId}/resource-kinds/{resourceKind}/resources/{resourceId}", + "code": 200 + }, + "smithy.api#documentation": "Get resource by ID\n\nGets resource by its ID." + } + }, + "com.vanta.manage_vanta#UpdateResourceRequest2": { + "type": "structure", + "members": { + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration." + } + }, + "resourceKind": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the integration resource kind." + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {}, + "smithy.api#documentation": "Unique identifier of the resource." + } + }, + "inScope": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Determines whether resources should be marked as in scope." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description to update for the resources." + } + }, + "ownerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Owner ID to update for the resources." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateResourceRequest2" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/integrations/{integrationId}/resource-kinds/{resourceKind}/resources/{resourceId}", + "code": 200 + }, + "smithy.api#documentation": "Update resource metadata\n\nUpdates metadata for a specific resource such as an S3Bucket or CloudwatchLogGroup." + } + }, + "com.vanta.manage_vanta#ListRequestReadableIssueIdMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#IssueStatus": { + "type": "enum", + "members": { + "NOT_STARTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_STARTED" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "CLOSED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CLOSED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRequestStatusMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#IssueStatus" + }, + "traits": {} + }, + "com.vanta.manage_vanta#IssueSeverity": { + "type": "enum", + "members": { + "CRITICAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRITICAL" + } + }, + "HIGH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HIGH" + } + }, + "MEDIUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MEDIUM" + } + }, + "LOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LOW" + } + }, + "NO_SEVERITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NO_SEVERITY" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRequestSeverityMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#IssueSeverity" + }, + "traits": {} + }, + "com.vanta.manage_vanta#SourceType": { + "type": "enum", + "members": { + "AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDIT" + } + }, + "AUDIT_EXTERNAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDIT_EXTERNAL" + } + }, + "INCIDENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCIDENT" + } + }, + "EXTERNAL_PARTY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXTERNAL_PARTY" + } + }, + "SELF_ASSESSMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SELF_ASSESSMENT" + } + }, + "OTHER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OTHER" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRequestSourceMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#SourceType" + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardIssueType": { + "type": "enum", + "members": { + "AREA_OF_CONCERN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AREA_OF_CONCERN" + } + }, + "MAJOR_NONCONFORMITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MAJOR_NONCONFORMITY" + } + }, + "MINOR_NONCONFORMITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MINOR_NONCONFORMITY" + } + }, + "OPP_FOR_IMPROVEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OPP_FOR_IMPROVEMENT" + } + }, + "EXCEPTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXCEPTION" + } + }, + "PROCESS_FOR_IMPROVEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PROCESS_FOR_IMPROVEMENT" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRequestTypeMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#StandardIssueType" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRequestOwnerIdMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#IssueTemplate": { + "type": "enum", + "members": { + "STANDARD_ISSUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "STANDARD_ISSUE" + } + }, + "STANDARD_POAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "STANDARD_POAM" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRequestTemplateMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#IssueTemplate" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ClosedReason": { + "type": "enum", + "members": { + "RESOLVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RESOLVED" + } + }, + "DUPLICATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DUPLICATE" + } + }, + "ACCEPTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCEPTED" + } + }, + "OTHER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OTHER" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRequestCloseReasonMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ClosedReason" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRequestAuditIdMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRequestControlIdMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#IssueSortField": { + "type": "enum", + "members": { + "DUEDATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "dueDate" + } + }, + "CREATEDDATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "createdDate" + } + }, + "DETECTEDDATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "detectedDate" + } + }, + "LASTMODIFIEDDATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "lastModifiedDate" + } + }, + "STATUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "status" + } + }, + "SEVERITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "severity" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#OrderDirection": { + "type": "enum", + "members": { + "ASC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "asc" + } + }, + "DESC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "desc" + } + } + }, + "traits": { + "smithy.api#documentation": "`\"asc\"` for ascending, `\"desc\"` for descending." + } + }, + "com.vanta.manage_vanta#ListRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "search": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "search", + "smithy.api#documentation": "Full-text search across issue title and description." + } + }, + "readableIssueIdMatchesAny": { + "target": "com.vanta.manage_vanta#ListRequestReadableIssueIdMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "readableIssueIdMatchesAny", + "smithy.api#documentation": "Filter to issues matching any of the provided readable issue IDs." + } + }, + "statusMatchesAny": { + "target": "com.vanta.manage_vanta#ListRequestStatusMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "statusMatchesAny", + "smithy.api#documentation": "Filter to issues matching any of the provided statuses." + } + }, + "severityMatchesAny": { + "target": "com.vanta.manage_vanta#ListRequestSeverityMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "severityMatchesAny", + "smithy.api#documentation": "Filter to issues matching any of the provided severities." + } + }, + "sourceMatchesAny": { + "target": "com.vanta.manage_vanta#ListRequestSourceMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "sourceMatchesAny", + "smithy.api#documentation": "Filter to issues matching any of the provided sources." + } + }, + "typeMatchesAny": { + "target": "com.vanta.manage_vanta#ListRequestTypeMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "typeMatchesAny", + "smithy.api#documentation": "Filter to issues matching any of the provided types." + } + }, + "ownerIdMatchesAny": { + "target": "com.vanta.manage_vanta#ListRequestOwnerIdMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "ownerIdMatchesAny", + "smithy.api#documentation": "Filter to issues owned by any of the provided owner IDs." + } + }, + "templateMatchesAny": { + "target": "com.vanta.manage_vanta#ListRequestTemplateMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "templateMatchesAny", + "smithy.api#documentation": "Filter to issues matching any of the provided templates." + } + }, + "closeReasonMatchesAny": { + "target": "com.vanta.manage_vanta#ListRequestCloseReasonMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "closeReasonMatchesAny", + "smithy.api#documentation": "Filter to issues closed for any of the provided reasons. Only applies\nto issues with a CLOSED status." + } + }, + "closedAfterDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "closedAfterDate", + "smithy.api#documentation": "Filter to issues closed on or after this date." + } + }, + "closedBeforeDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "closedBeforeDate", + "smithy.api#documentation": "Filter to issues closed on or before this date." + } + }, + "includeIssuesWithoutDueDate": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "includeIssuesWithoutDueDate", + "smithy.api#documentation": "Include issues without a due date. This is functionally a no-op if dueBeforeDate or dueAfterDate are not provided." + } + }, + "includeOnlyIssuesWithoutDueDate": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "includeOnlyIssuesWithoutDueDate", + "smithy.api#documentation": "Only include issues without a due date. This filter cannot be used in conjunction with dueBeforeDate or dueAfterDate." + } + }, + "dueAfterDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "dueAfterDate", + "smithy.api#documentation": "Filter to issues with a due date on or after this date." + } + }, + "dueBeforeDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "dueBeforeDate", + "smithy.api#documentation": "Filter to issues with a due date on or before this date." + } + }, + "detectedAfterDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "detectedAfterDate", + "smithy.api#documentation": "Filter to issues detected on or after this date." + } + }, + "detectedBeforeDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "detectedBeforeDate", + "smithy.api#documentation": "Filter to issues detected on or before this date." + } + }, + "createdAfterDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "createdAfterDate", + "smithy.api#documentation": "Filter to issues created on or after this date." + } + }, + "createdBeforeDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "createdBeforeDate", + "smithy.api#documentation": "Filter to issues created on or before this date." + } + }, + "auditIdMatchesAny": { + "target": "com.vanta.manage_vanta#ListRequestAuditIdMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "auditIdMatchesAny", + "smithy.api#documentation": "Filter to issues sourced from any of the provided audit IDs." + } + }, + "controlIdMatchesAny": { + "target": "com.vanta.manage_vanta#ListRequestControlIdMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "controlIdMatchesAny", + "smithy.api#documentation": "Filter to issues mapped to any of the provided control IDs." + } + }, + "orderBy": { + "target": "com.vanta.manage_vanta#IssueSortField", + "traits": { + "smithy.api#httpQuery": "orderBy", + "smithy.api#documentation": "Field to sort the results by." + } + }, + "orderDirection": { + "target": "com.vanta.manage_vanta#OrderDirection", + "traits": { + "smithy.api#httpQuery": "orderDirection", + "smithy.api#documentation": "Direction to sort the results in. One of `asc` or `desc`. Defaults to `asc`." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseIssue": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseIssueResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Issue": { + "type": "union", + "members": { + "StandardIssue": { + "target": "com.vanta.manage_vanta#StandardIssue" + }, + "StandardPOAM": { + "target": "com.vanta.manage_vanta#StandardPOAM" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardIssue": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "readableIssueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "createdDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "createdBy": { + "target": "com.vanta.manage_vanta#Actor", + "traits": { + "smithy.api#required": {} + } + }, + "lastModifiedBy": { + "target": "com.vanta.manage_vanta#Actor", + "traits": { + "smithy.api#required": {} + } + }, + "lastModifiedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "owners": { + "target": "com.vanta.manage_vanta#StandardIssueOwnersList", + "traits": { + "smithy.api#required": {} + } + }, + "severity": { + "target": "com.vanta.manage_vanta#IssueSeverity", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#IssueStatus", + "traits": { + "smithy.api#required": {} + } + }, + "rootCause": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "correctiveAction": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "source": { + "target": "com.vanta.manage_vanta#Source", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "controlDomain": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "closedMetadata": { + "target": "com.vanta.manage_vanta#ClosedMetadata", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "detectedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "mappedControlIds": { + "target": "com.vanta.manage_vanta#StandardIssueMappedControlIdsList", + "traits": { + "smithy.api#required": {} + } + }, + "mappedRiskScenarioIds": { + "target": "com.vanta.manage_vanta#StandardIssueMappedRiskScenarioIdsList", + "traits": { + "smithy.api#required": {} + } + }, + "mappedPolicyIds": { + "target": "com.vanta.manage_vanta#StandardIssueMappedPolicyIdsList", + "traits": { + "smithy.api#required": {} + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#StandardIssueCustomFieldsList", + "traits": { + "smithy.api#required": {} + } + }, + "template": { + "target": "com.vanta.manage_vanta#ExtractIssueTemplateSTANDARDISSUE", + "traits": { + "smithy.api#required": {} + } + }, + "type": { + "target": "com.vanta.manage_vanta#StandardIssueType", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Actor": { + "type": "structure", + "members": { + "actorType": { + "target": "com.vanta.manage_vanta#ActorType", + "traits": { + "smithy.api#required": {} + } + }, + "actorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ActorType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USER" + } + }, + "APPLICATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPLICATION" + } + }, + "WORKFLOW_GENERATED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WORKFLOW_GENERATED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#IssueOwner": { + "type": "structure", + "members": { + "ownerType": { + "target": "com.vanta.manage_vanta#OwnerType", + "traits": { + "smithy.api#required": {} + } + }, + "ownerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#OwnerType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USER" + } + }, + "TEAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TEAM" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardIssueOwnersList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#IssueOwner" + }, + "traits": {} + }, + "com.vanta.manage_vanta#Source": { + "type": "structure", + "members": { + "sourceType": { + "target": "com.vanta.manage_vanta#SourceType", + "traits": { + "smithy.api#required": {} + } + }, + "sourceId": { + "target": "smithy.api#String" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ClosedMetadata": { + "type": "structure", + "members": { + "reason": { + "target": "com.vanta.manage_vanta#ClosedReason", + "traits": { + "smithy.api#required": {} + } + }, + "comment": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "closedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardIssueMappedControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardIssueMappedRiskScenarioIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardIssueMappedPolicyIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#IssueCustomField": { + "type": "structure", + "members": { + "label": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "value": { + "target": "com.vanta.manage_vanta#IssueCustomFieldValue", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#IssueCustomFieldValueCase1List": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#IssueCustomFieldValue": { + "type": "union", + "members": { + "Case0": { + "target": "smithy.api#String" + }, + "Case1": { + "target": "com.vanta.manage_vanta#IssueCustomFieldValueCase1List" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardIssueCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#IssueCustomField" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ExtractIssueTemplateSTANDARDISSUE": { + "type": "enum", + "members": { + "STANDARD_ISSUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "STANDARD_ISSUE" + } + } + }, + "traits": { + "smithy.api#documentation": "Extract from T those types that are assignable to U" + } + }, + "com.vanta.manage_vanta#StandardPOAM": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "readableIssueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "createdDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "createdBy": { + "target": "com.vanta.manage_vanta#Actor", + "traits": { + "smithy.api#required": {} + } + }, + "lastModifiedBy": { + "target": "com.vanta.manage_vanta#Actor", + "traits": { + "smithy.api#required": {} + } + }, + "lastModifiedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "owners": { + "target": "com.vanta.manage_vanta#StandardPOAMOwnersList", + "traits": { + "smithy.api#required": {} + } + }, + "severity": { + "target": "com.vanta.manage_vanta#IssueSeverity", + "traits": { + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#IssueStatus", + "traits": { + "smithy.api#required": {} + } + }, + "rootCause": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "correctiveAction": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "source": { + "target": "com.vanta.manage_vanta#Source", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "controlDomain": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "closedMetadata": { + "target": "com.vanta.manage_vanta#ClosedMetadata", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "detectedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "mappedControlIds": { + "target": "com.vanta.manage_vanta#StandardPOAMMappedControlIdsList", + "traits": { + "smithy.api#required": {} + } + }, + "mappedRiskScenarioIds": { + "target": "com.vanta.manage_vanta#StandardPOAMMappedRiskScenarioIdsList", + "traits": { + "smithy.api#required": {} + } + }, + "mappedPolicyIds": { + "target": "com.vanta.manage_vanta#StandardPOAMMappedPolicyIdsList", + "traits": { + "smithy.api#required": {} + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#StandardPOAMCustomFieldsList", + "traits": { + "smithy.api#required": {} + } + }, + "template": { + "target": "com.vanta.manage_vanta#ExtractIssueTemplateSTANDARDPOAM", + "traits": { + "smithy.api#required": {} + } + }, + "requiredResources": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "systemsDescription": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardPOAMOwnersList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#IssueOwner" + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardPOAMMappedControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardPOAMMappedRiskScenarioIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardPOAMMappedPolicyIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#StandardPOAMCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#IssueCustomField" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ExtractIssueTemplateSTANDARDPOAM": { + "type": "enum", + "members": { + "STANDARD_POAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "STANDARD_POAM" + } + } + }, + "traits": { + "smithy.api#documentation": "Extract from T those types that are assignable to U" + } + }, + "com.vanta.manage_vanta#PaginatedResponseIssueResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Issue" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseIssueResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseIssueResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#List": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseIssue" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/issues", + "code": 200 + }, + "smithy.api#documentation": "List issues\n\nList issues on a domain (paginated).\nReturns a paginated list of issues that the authenticated app has\npermission to view, optionally filtered and sorted." + } + }, + "com.vanta.manage_vanta#GetIssueRequest": { + "type": "structure", + "members": { + "issueId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetIssueResponse": { + "type": "structure", + "members": { + "body": { + "target": "com.vanta.manage_vanta#Issue", + "traits": { + "com.distilled.openapi#rawResponse": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.manage_vanta#GetIssue": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetIssueRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#GetIssueResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/issues/{issueId}", + "code": 200 + }, + "smithy.api#documentation": "Get issue by ID\n\nGet the details of an issue by its ID." + } + }, + "com.vanta.manage_vanta#ListAnswerLibraryEntriesRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "q": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "q", + "smithy.api#documentation": "Full-text search across question and answer." + } + }, + "lastUpdatedAfter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "lastUpdatedAfter", + "smithy.api#documentation": "Only include entries updated at or after this ISO 8601 timestamp." + } + }, + "lastUpdatedBefore": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "lastUpdatedBefore", + "smithy.api#documentation": "Only include entries updated at or before this ISO 8601 timestamp." + } + }, + "matchesTags": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "matchesTags", + "smithy.api#documentation": "JSON-encoded array of `{categoryId, tagId}` pairs. Entries matching any\nof the given tags are returned (OR filter). Discover valid `categoryId`\nand `tagId` values via `GET /v1/customer-trust/tag-categories` (to list\ncategories) and `GET /v1/customer-trust/tag-categories/{tagCategoryId}`\n(to list tags within a category)." + } + }, + "expiresBefore": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "expiresBefore", + "smithy.api#documentation": "Only include entries expiring at or before this ISO 8601 timestamp." + } + }, + "expiresAfter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "expiresAfter", + "smithy.api#documentation": "Only include entries expiring at or after this ISO 8601 timestamp." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutput": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseAnswerLibraryEntryOutput": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "question": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "answer": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "expirationStatus": { + "target": "com.vanta.manage_vanta#KnowledgeBaseAnswerLibraryEntryOutputExpirationStatus", + "traits": { + "smithy.api#required": {} + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#AnswerLibraryActorAssignment", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "lastUpdated": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "lastVerified": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "tags": { + "target": "com.vanta.manage_vanta#KnowledgeBaseAnswerLibraryEntryOutputTagsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseAnswerLibraryEntryOutputExpirationStatus": { + "type": "enum", + "members": { + "CURRENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CURRENT" + } + }, + "EXPIRED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXPIRED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AnswerLibraryActorAssignment": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#AnswerLibraryActorAssignmentType", + "traits": { + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AnswerLibraryActorAssignmentType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "User" + } + }, + "TEAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Team" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseAnswerLibraryEntryOutputTagsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#KnowledgeBaseAnswerLibraryEntryOutput" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListAnswerLibraryEntries": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListAnswerLibraryEntriesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutput" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/knowledge-base/answer-library", + "code": 200 + }, + "smithy.api#documentation": "List Answer Library entries\n\nList Answer Library entries. Supports full-text search, tag filtering\n(OR across the given tags), and date-range filters on last-updated and\nexpiration.\n\nEntries are returned most-recently-updated first." + } + }, + "com.vanta.manage_vanta#AnswerLibraryActorAssignmentInput": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#AnswerLibraryActorAssignmentInputType", + "traits": { + "smithy.api#documentation": "The type of actor. Currently only \"User\" is supported.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the user or team.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AnswerLibraryActorAssignmentInputType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "User" + } + } + }, + "traits": { + "smithy.api#documentation": "The type of actor. Currently only \"User\" is supported." + } + }, + "com.vanta.manage_vanta#CreateAnswerLibraryEntryRequestTagsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": { + "smithy.api#documentation": "Tags to associate with the entry. Discover valid `categoryId` and `tagId`\nvalues via `GET /v1/customer-trust/tag-categories` (to list categories)\nand `GET /v1/customer-trust/tag-categories/{tagCategoryId}` (to list tags\nwithin a category)." + } + }, + "com.vanta.manage_vanta#CreateAnswerLibraryEntryRequest": { + "type": "structure", + "members": { + "question": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The question text.", + "smithy.api#required": {} + } + }, + "answer": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The answer text.", + "smithy.api#required": {} + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#AnswerLibraryActorAssignmentInput", + "traits": { + "smithy.api#documentation": "The actor to assign as owner. Currently only type \"User\" is supported." + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The expiration date in ISO 8601 format." + } + }, + "tags": { + "target": "com.vanta.manage_vanta#CreateAnswerLibraryEntryRequestTagsList", + "traits": { + "smithy.api#documentation": "Tags to associate with the entry. Discover valid `categoryId` and `tagId`\nvalues via `GET /v1/customer-trust/tag-categories` (to list categories)\nand `GET /v1/customer-trust/tag-categories/{tagCategoryId}` (to list tags\nwithin a category)." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateAnswerLibraryEntry": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateAnswerLibraryEntryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#KnowledgeBaseAnswerLibraryEntryOutput" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/knowledge-base/answer-library", + "code": 200 + }, + "smithy.api#documentation": "Create Answer Library entry\n\nCreate an Answer Library entry." + } + }, + "com.vanta.manage_vanta#GetAnswerLibraryEntryRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetAnswerLibraryEntry": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetAnswerLibraryEntryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#KnowledgeBaseAnswerLibraryEntryOutput" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/knowledge-base/answer-library/{id}", + "code": 200 + }, + "smithy.api#documentation": "Get Answer Library entry\n\nGet an Answer Library entry." + } + }, + "com.vanta.manage_vanta#UpdateAnswerLibraryEntryRouteRequestTagsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": { + "smithy.api#documentation": "Tags to associate with the entry. Replaces the existing tag set. Pass\n`[]` to clear all tags. Discover valid `categoryId` and `tagId` values\nvia `GET /v1/customer-trust/tag-categories` (to list categories) and\n`GET /v1/customer-trust/tag-categories/{tagCategoryId}` (to list tags\nwithin a category)." + } + }, + "com.vanta.manage_vanta#UpdateAnswerLibraryEntryRouteRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "question": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The question text." + } + }, + "answer": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The answer text." + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#AnswerLibraryActorAssignmentInput", + "traits": { + "smithy.api#documentation": "The actor to assign as owner. Pass `null` to clear. Currently only type\n\"User\" is supported.", + "com.distilled.openapi#nullable": {} + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The expiration date in ISO 8601 format. Pass `null` to clear.", + "com.distilled.openapi#nullable": {} + } + }, + "tags": { + "target": "com.vanta.manage_vanta#UpdateAnswerLibraryEntryRouteRequestTagsList", + "traits": { + "smithy.api#documentation": "Tags to associate with the entry. Replaces the existing tag set. Pass\n`[]` to clear all tags. Discover valid `categoryId` and `tagId` values\nvia `GET /v1/customer-trust/tag-categories` (to list categories) and\n`GET /v1/customer-trust/tag-categories/{tagCategoryId}` (to list tags\nwithin a category)." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateAnswerLibraryEntryRoute": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateAnswerLibraryEntryRouteRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#KnowledgeBaseAnswerLibraryEntryOutput" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/knowledge-base/answer-library/{id}", + "code": 200 + }, + "smithy.api#documentation": "Update Answer Library entry\n\nUpdate an Answer Library entry." + } + }, + "com.vanta.manage_vanta#DeleteAnswerLibraryEntryRouteRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteAnswerLibraryEntryRoute": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteAnswerLibraryEntryRouteRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/knowledge-base/answer-library/{id}", + "code": 200 + }, + "smithy.api#documentation": "Delete Answer Library entry\n\nDelete an Answer Library entry." + } + }, + "com.vanta.manage_vanta#VerifyAnswerLibraryEntryRouteRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The expiration date in ISO 8601 format. If omitted, falls back to the\nconfigured review cadence." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#VerifyAnswerLibraryEntryRoute": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#VerifyAnswerLibraryEntryRouteRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#KnowledgeBaseAnswerLibraryEntryOutput" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/knowledge-base/answer-library/{id}/verify", + "code": 200 + }, + "smithy.api#documentation": "Verify Answer Library entry\n\nMark an Answer Library entry as verified. Stamps `lastVerifiedAt` to the\ncurrent time; the entry's question, answer, tags, owner, and expiration\nare left unchanged." + } + }, + "com.vanta.manage_vanta#KnowledgeBaseResourceTypeFilter": { + "type": "enum", + "members": { + "FILE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FILE" + } + }, + "URL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "URL" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListKnowledgeBaseResourcesRequestTypeMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#KnowledgeBaseResourceTypeFilter" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListKnowledgeBaseResourcesRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "q": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "q", + "smithy.api#documentation": "Full-text search across resource titles." + } + }, + "typeMatchesAny": { + "target": "com.vanta.manage_vanta#ListKnowledgeBaseResourcesRequestTypeMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "typeMatchesAny", + "smithy.api#documentation": "Filter to FILE and/or URL resources. Repeat the param to allow either." + } + }, + "lastUpdatedAfter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "lastUpdatedAfter", + "smithy.api#documentation": "Only include resources updated at or after this ISO 8601 timestamp." + } + }, + "lastUpdatedBefore": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "lastUpdatedBefore", + "smithy.api#documentation": "Only include resources updated at or before this ISO 8601 timestamp." + } + }, + "matchesTags": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "matchesTags", + "smithy.api#documentation": "JSON-encoded array of `{categoryId, tagId}` pairs. Tags within the\nsame category are OR'd together; tags across different categories\nare AND'd. For example, passing two tags from \"Framework\" and one\ntag from \"Region\" matches resources that have either of the two\nframeworks AND the given region. Discover valid `categoryId` and\n`tagId` values via `GET /v1/customer-trust/tag-categories` (to list\ncategories) and `GET /v1/customer-trust/tag-categories/{tagCategoryId}`\n(to list tags within a category)." + } + }, + "expiresBefore": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "expiresBefore", + "smithy.api#documentation": "Only include resources expiring at or before this ISO 8601 timestamp." + } + }, + "expiresAfter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "expiresAfter", + "smithy.api#documentation": "Only include resources expiring at or after this ISO 8601 timestamp." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustKnowledgeBaseResourceOutput": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustKnowledgeBaseResourceOutputResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustKnowledgeBaseResourceOutput": { + "type": "union", + "members": { + "KnowledgeBaseDocumentResourceOutput": { + "target": "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutput" + }, + "KnowledgeBaseWebpageResourceOutput": { + "target": "com.vanta.manage_vanta#KnowledgeBaseWebpageResourceOutput" + } + }, + "traits": { + "smithy.api#documentation": "Discriminated union over `type` of all resource kinds in the Trust\nKnowledge Base (currently FILE and URL)." + } + }, + "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutput": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "type": { + "target": "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutputType", + "traits": { + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "fileUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Presigned S3 URL for the underlying document. Expires after 1 hour due\nto AWS IAM Role limitations on presigned URL lifetimes. Re-fetch the\nresource to obtain a fresh URL once this one expires.", + "smithy.api#required": {} + } + }, + "customerVisibility": { + "target": "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutputCustomerVisibility", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "downloadPermission": { + "target": "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutputDownloadPermission", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "isUsedInQuestionnaires": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignment", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "expirationStatus": { + "target": "com.vanta.manage_vanta#KnowledgeBaseExpirationStatus", + "traits": { + "smithy.api#required": {} + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "lastUpdated": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "lastVerified": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "tags": { + "target": "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutputTagsList", + "traits": { + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Trust Center category id the resource is currently filed under, or\n`null` if uncategorized (or not on the Trust Center, which is the case\nfor `PRIVATE` / `SHAREABLE` resources).", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutputType": { + "type": "enum", + "members": { + "FILE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FILE" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutputCustomerVisibility": { + "type": "enum", + "members": { + "PUBLIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PUBLIC" + } + }, + "SHAREABLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SHAREABLE" + } + }, + "PRIVATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRIVATE" + } + }, + "REQUEST_ACCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "REQUEST_ACCESS" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutputDownloadPermission": { + "type": "enum", + "members": { + "VIEW_ONLY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VIEW_ONLY" + } + }, + "VIEW_AND_DOWNLOAD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VIEW_AND_DOWNLOAD" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignment": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignmentType", + "traits": { + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignmentType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "User" + } + }, + "TEAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Team" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseExpirationStatus": { + "type": "enum", + "members": { + "CURRENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CURRENT" + } + }, + "EXPIRED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXPIRED" + } + } + }, + "traits": { + "smithy.api#documentation": "Customer-facing expiration status used by knowledge-base API responses\n(answer library entries and resources). Derived from the persisted\n`expiresAt` field at read time." + } + }, + "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutputTagsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseWebpageResourceOutput": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "type": { + "target": "com.vanta.manage_vanta#KnowledgeBaseWebpageResourceOutputType", + "traits": { + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "customerVisibility": { + "target": "com.vanta.manage_vanta#KnowledgeBaseWebpageResourceOutputCustomerVisibility", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "includeSubPages": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "isUsedInQuestionnaires": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignment", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "expirationStatus": { + "target": "com.vanta.manage_vanta#KnowledgeBaseExpirationStatus", + "traits": { + "smithy.api#required": {} + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "lastUpdated": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "lastVerified": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "tags": { + "target": "com.vanta.manage_vanta#KnowledgeBaseWebpageResourceOutputTagsList", + "traits": { + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Trust Center category id the resource is currently filed under, or\n`null` if uncategorized (or not on the Trust Center, which is the case\nfor `PRIVATE` / `SHAREABLE` resources).", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseWebpageResourceOutputType": { + "type": "enum", + "members": { + "URL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "URL" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseWebpageResourceOutputCustomerVisibility": { + "type": "enum", + "members": { + "PUBLIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PUBLIC" + } + }, + "SHAREABLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SHAREABLE" + } + }, + "PRIVATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRIVATE" + } + }, + "REQUEST_ACCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "REQUEST_ACCESS" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseWebpageResourceOutputTagsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustKnowledgeBaseResourceOutputResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustKnowledgeBaseResourceOutput" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustKnowledgeBaseResourceOutputResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustKnowledgeBaseResourceOutputResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListKnowledgeBaseResources": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListKnowledgeBaseResourcesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustKnowledgeBaseResourceOutput" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/knowledge-base/resources", + "code": 200 + }, + "smithy.api#documentation": "List Knowledge Base resources\n\nList Knowledge Base resources (documents and webpages) in a single\npaginated response. Each entry is a discriminated union on `type` —\n\"FILE\" entries carry a `fileUrl` (presigned S3 URL, valid for one\nhour), \"URL\" entries carry the resource's `url` and `includeSubPages`.\n\nSupports full-text search, type filtering, tag filtering (OR within\na category, AND across categories), and date-range filters on\nlast-updated and expiration.\n\nResources are returned most-recently-updated first." + } + }, + "com.vanta.manage_vanta#CreateDocumentResourceRequest": { + "type": "structure", + "members": { + "file": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title of the document resource.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the document resource." + } + }, + "ownerAssignment": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Owner to assign as a JSON string: {\"type\":\"User\",\"id\":\"\"}." + } + }, + "customerVisibility": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Customer visibility on the Trust Center: PRIVATE | SHAREABLE | REQUEST_ACCESS | PUBLIC." + } + }, + "downloadPermission": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Trust Center download permission: VIEW_ONLY | VIEW_AND_DOWNLOAD." + } + }, + "isUsedInQuestionnaires": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Whether to use this resource for Questionnaire Automation answer generation (\"true\" / \"false\")." + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Expiration date in ISO 8601." + } + }, + "tags": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Tags as a JSON array: [{\"categoryId\":\"\",\"tagId\":\"\"}]." + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Trust Center category id to associate this resource with. Only\napplied when `customerVisibility` is `REQUEST_ACCESS` or `PUBLIC`;\nother visibilities don't place the resource on the Trust Center, so\nthe category is ignored. Pass an unknown id to fall back to\nuncategorized." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateDocumentResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateDocumentResourceRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutput" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/knowledge-base/resources/documents", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Create document resource\n\nCreate a document (FILE-type) resource in the Trust Knowledge Base.\nAccepts the document as a multipart/form-data upload.\n\nExample: send `multipart/form-data` with a required `file` (e.g. PDF)\nand `title`; optional fields include `description`, `customerVisibility`,\n`downloadPermission`, `isUsedInQuestionnaires` (\"true\"/\"false\"),\n`expirationDate` (ISO 8601), `tags` (JSON array string), `categoryId`,\nand `ownerAssignment` (JSON object string).", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignmentInput": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignmentInputType", + "traits": { + "smithy.api#documentation": "The type of actor. Currently only \"User\" is supported.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the user.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignmentInputType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "User" + } + } + }, + "traits": { + "smithy.api#documentation": "The type of actor. Currently only \"User\" is supported." + } + }, + "com.vanta.manage_vanta#KnowledgeBaseCustomerVisibility": { + "type": "enum", + "members": { + "PRIVATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRIVATE" + } + }, + "SHAREABLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SHAREABLE" + } + }, + "REQUEST_ACCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "REQUEST_ACCESS" + } + }, + "PUBLIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PUBLIC" + } + } + }, + "traits": { + "smithy.api#documentation": "Customer-facing visibility of a knowledge-base resource on the\nTrust Center. Use {@link CUSTOMER_VISIBILITY_TO_DB} to translate to\n{@link TrustCenterResourceVisibility} when persisting." + } + }, + "com.vanta.manage_vanta#KnowledgeBaseResourceDownloadPermission": { + "type": "enum", + "members": { + "VIEW_ONLY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VIEW_ONLY" + } + }, + "VIEW_AND_DOWNLOAD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VIEW_AND_DOWNLOAD" + } + } + }, + "traits": { + "smithy.api#documentation": "Customer-facing download permission for a knowledge-base resource on\nthe Trust Center. Use {@link DOWNLOAD_PERMISSION_TO_DB} to translate\nto {@link TrustKnowledgeBaseResourceDownloadSetting} when persisting." + } + }, + "com.vanta.manage_vanta#UpdateDocumentResourceRequestTagsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": { + "smithy.api#documentation": "Tags to associate with the resource. A non-empty array replaces the\nexisting tag set; pass `[]` to clear all tags." + } + }, + "com.vanta.manage_vanta#UpdateDocumentResourceRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title of the document resource." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A description for the document resource. Pass `null` to clear.", + "com.distilled.openapi#nullable": {} + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignmentInput", + "traits": { + "smithy.api#documentation": "The actor to assign as owner. Pass `null` to clear. Currently only type\n\"User\" is supported.", + "com.distilled.openapi#nullable": {} + } + }, + "customerVisibility": { + "target": "com.vanta.manage_vanta#KnowledgeBaseCustomerVisibility", + "traits": { + "smithy.api#documentation": "Customer visibility on the Trust Center." + } + }, + "downloadPermission": { + "target": "com.vanta.manage_vanta#KnowledgeBaseResourceDownloadPermission", + "traits": { + "smithy.api#documentation": "Trust Center download permission." + } + }, + "isUsedInQuestionnaires": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource should be used for question-answering in\nQuestionnaire Automation." + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Expiration date in ISO 8601 format. Pass `null` to clear.", + "com.distilled.openapi#nullable": {} + } + }, + "tags": { + "target": "com.vanta.manage_vanta#UpdateDocumentResourceRequestTagsList", + "traits": { + "smithy.api#documentation": "Tags to associate with the resource. A non-empty array replaces the\nexisting tag set; pass `[]` to clear all tags." + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Trust Center category id to associate this resource with. Pass `null`\nto move the resource to uncategorized. Only valid when the resource's\neffective visibility (after applying any patched `customerVisibility`)\nis REQUEST_ACCESS or PUBLIC; other combinations and unknown ids return\nan InvalidInputError.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateDocumentResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateDocumentResourceRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutput" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/knowledge-base/resources/documents/{id}", + "code": 200 + }, + "smithy.api#documentation": "Update document resource\n\nApply a partial update to a document (FILE-type) resource. Omitted\nfields are left untouched. To swap the underlying file, use\n`POST /v1/knowledge-base/resources/documents/{id}/upload`. Returns\n404 for an unknown id or a URL-type resource." + } + }, + "com.vanta.manage_vanta#ReplaceDocumentResourceFileRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "file": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "New document binary; replaces the existing file in place.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ReplaceDocumentResourceFile": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ReplaceDocumentResourceFileRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#KnowledgeBaseDocumentResourceOutput" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/knowledge-base/resources/documents/{id}/upload", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Replace document resource file\n\nReplace the underlying file on a document (FILE-type) resource with\na new multipart upload. Other resource fields (title, description,\nvisibility, tags, owner, etc.) are unchanged — use PATCH for those.\nReturns 404 for an unknown id or a URL-type resource.\n\nExample: send `multipart/form-data` with a single `file` field (the\nnew document binary).", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#CreateWebpageResourceRequestTagsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": { + "smithy.api#documentation": "Tags to associate with the resource." + } + }, + "com.vanta.manage_vanta#CreateWebpageResourceRequest": { + "type": "structure", + "members": { + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title of the webpage resource.", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The URL of the webpage.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A description for the webpage resource." + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignmentInput", + "traits": { + "smithy.api#documentation": "The actor to assign as owner. Currently only type \"User\" is supported." + } + }, + "customerVisibility": { + "target": "com.vanta.manage_vanta#KnowledgeBaseCustomerVisibility", + "traits": { + "smithy.api#documentation": "Customer visibility on the Trust Center. Webpage resources accept only\nPRIVATE or PUBLIC; REQUEST_ACCESS and SHAREABLE return an\nInvalidInputError." + } + }, + "includeSubPages": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether to scan sub-pages one level deep alongside the primary URL." + } + }, + "isUsedInQuestionnaires": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource should be used for question-answering in\nQuestionnaire Automation." + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Expiration date in ISO 8601 format." + } + }, + "tags": { + "target": "com.vanta.manage_vanta#CreateWebpageResourceRequestTagsList", + "traits": { + "smithy.api#documentation": "Tags to associate with the resource." + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Trust Center category id to associate this resource with. Pass `null`\nto keep the resource uncategorized. Only valid when `customerVisibility`\nis PUBLIC; other combinations and unknown ids return an\nInvalidInputError.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateWebpageResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateWebpageResourceRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#KnowledgeBaseWebpageResourceOutput" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/knowledge-base/resources/webpages", + "code": 200 + }, + "smithy.api#documentation": "Create webpage resource\n\nCreate a webpage (URL-type) resource in the Trust Knowledge Base." + } + }, + "com.vanta.manage_vanta#UpdateWebpageResourceRequestTagsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagInput" + }, + "traits": { + "smithy.api#documentation": "Tags to associate with the resource. A non-empty array replaces the\nexisting tag set; pass `[]` to clear all tags." + } + }, + "com.vanta.manage_vanta#UpdateWebpageResourceRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The title of the webpage resource." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A description for the webpage resource. Pass `null` to clear.", + "com.distilled.openapi#nullable": {} + } + }, + "ownerAssignment": { + "target": "com.vanta.manage_vanta#KnowledgeBaseResourceActorAssignmentInput", + "traits": { + "smithy.api#documentation": "The actor to assign as owner. Pass `null` to clear. Currently only type\n\"User\" is supported.", + "com.distilled.openapi#nullable": {} + } + }, + "customerVisibility": { + "target": "com.vanta.manage_vanta#KnowledgeBaseCustomerVisibility", + "traits": { + "smithy.api#documentation": "Customer visibility on the Trust Center. Webpage resources accept only\nPRIVATE or PUBLIC; REQUEST_ACCESS and SHAREABLE return an\nInvalidInputError." + } + }, + "includeSubPages": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether to scan sub-pages one level deep alongside the primary URL." + } + }, + "isUsedInQuestionnaires": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the resource should be used for question-answering in\nQuestionnaire Automation." + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Expiration date in ISO 8601 format. Pass `null` to clear.", + "com.distilled.openapi#nullable": {} + } + }, + "tags": { + "target": "com.vanta.manage_vanta#UpdateWebpageResourceRequestTagsList", + "traits": { + "smithy.api#documentation": "Tags to associate with the resource. A non-empty array replaces the\nexisting tag set; pass `[]` to clear all tags." + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Trust Center category id to associate this resource with. Pass `null`\nto move the resource to uncategorized. Only valid when the resource's\neffective visibility (after applying any patched `customerVisibility`)\nis PUBLIC; other combinations and unknown ids return an\nInvalidInputError.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateWebpageResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateWebpageResourceRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#KnowledgeBaseWebpageResourceOutput" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/knowledge-base/resources/webpages/{id}", + "code": 200 + }, + "smithy.api#documentation": "Update webpage resource\n\nApply a partial update to a webpage (URL-type) resource. Omitted\nfields are left untouched. `description`, `ownerAssignment`, and\n`expirationDate` accept `null` to clear. The resource URL is not\nupdatable here — recreate the resource if the URL needs to change.\nReturns 404 for an unknown id or a FILE-type resource." + } + }, + "com.vanta.manage_vanta#GetKnowledgeBaseResourceRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetKnowledgeBaseResourceResponse": { + "type": "structure", + "members": { + "body": { + "target": "com.vanta.manage_vanta#TrustKnowledgeBaseResourceOutput", + "traits": { + "com.distilled.openapi#rawResponse": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.manage_vanta#GetKnowledgeBaseResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetKnowledgeBaseResourceRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#GetKnowledgeBaseResourceResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/knowledge-base/resources/{id}", + "code": 200 + }, + "smithy.api#documentation": "Get Knowledge Base resource\n\nFetch a single Knowledge Base resource (FILE or URL) by id. Returns\nthe same `type`-discriminated union as the list endpoint, so callers\ncan branch on `type` without knowing the kind ahead of time. Returns\n404 when the resource does not exist in the domain or — for FILE\nrows — when the underlying uploaded document has been deleted." + } + }, + "com.vanta.manage_vanta#DeleteKnowledgeBaseResourceRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteKnowledgeBaseResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteKnowledgeBaseResourceRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/knowledge-base/resources/{id}", + "code": 200 + }, + "smithy.api#documentation": "Delete Knowledge Base resource\n\nHard-delete a Knowledge Base resource (FILE or URL) by id. Tears down\nthe row plus its associated state (uploaded document for FILE rows,\nTrust Center references, Oso facts, chunk-store entries) via\n .\n\nReturns 404 when the id is unknown in the calling token's domain." + } + }, + "com.vanta.manage_vanta#VerifyKnowledgeBaseResourceRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The expiration date in ISO 8601 format. If omitted, falls back to the\nconfigured review cadence." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#VerifyKnowledgeBaseResourceResponse": { + "type": "structure", + "members": { + "body": { + "target": "com.vanta.manage_vanta#TrustKnowledgeBaseResourceOutput", + "traits": { + "com.distilled.openapi#rawResponse": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.manage_vanta#VerifyKnowledgeBaseResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#VerifyKnowledgeBaseResourceRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#VerifyKnowledgeBaseResourceResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/knowledge-base/resources/{id}/verify", + "code": 200 + }, + "smithy.api#documentation": "Verify Knowledge Base resource\n\nMark a Knowledge Base resource (FILE or URL) as verified. Stamps\n`lastVerifiedAt` to the current time and resets `expiresAt` forward\nby the domain's configured review cadence; the resource's content\n(title, description, file or url, tags, owner) is left unchanged.\nCaller does not need to know the resource type — the persisted\n`resourceType` is used. Returns 404 when the id is unknown in the\ndomain or — for FILE rows — when the underlying uploaded document\nhas been deleted." + } + }, + "com.vanta.manage_vanta#ComputerStatusFilter": { + "type": "enum", + "members": { + "PWM_NOT_INSTALLED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PWM_NOT_INSTALLED" + } + }, + "HD_NOT_ENCRYPTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HD_NOT_ENCRYPTED" + } + }, + "AV_NOT_INSTALLED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AV_NOT_INSTALLED" + } + }, + "SCREENLOCK_NOT_CONFIGURED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SCREENLOCK_NOT_CONFIGURED" + } + }, + "LAST_CHECK_OVER_14_DAYS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LAST_CHECK_OVER_14_DAYS" + } + } + }, + "traits": { + "smithy.api#documentation": "Enum representing computer compliance statuses that can be utilized as a filter. The meanings are as follows:\nAV_NOT_INSTALLED: The computer does not have antivirus software installed.\nHD_NOT_ENCRYPTED: The computer's harddrive is not encrypted.\nLAST_CHECK_OVER_14_DAYS: No data has been received from computer for over 14 days.\nPWM_NOT_INSTALLED: The computer does not have a password manager installed.\nSCREENLOCK_NOT_CONFIGURED: The computer does not have screenlock configured appropriately." + } + }, + "com.vanta.manage_vanta#ListMonitoredComputersRequestComplianceStatusFilterMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ComputerStatusFilter" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListMonitoredComputersRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "complianceStatusFilterMatchesAny": { + "target": "com.vanta.manage_vanta#ListMonitoredComputersRequestComplianceStatusFilterMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "complianceStatusFilterMatchesAny", + "smithy.api#documentation": "Filters for monitored computers matching any status declared in the filter." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseMonitoredComputer": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseMonitoredComputerResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#MonitoredComputer": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the monitored computer.", + "smithy.api#required": {} + } + }, + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Hard-coded enums for Vanta-built integrations or application IDs for 3rd-party-built integrations.", + "smithy.api#required": {} + } + }, + "lastCheckDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date of the computer's most recent report.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "screenlock": { + "target": "com.vanta.manage_vanta#ComputerStatus", + "traits": { + "smithy.api#documentation": "Whether or not the computer has screenlock enabled.", + "smithy.api#required": {} + } + }, + "diskEncryption": { + "target": "com.vanta.manage_vanta#ComputerStatus", + "traits": { + "smithy.api#documentation": "Whether or not the computer's hard drive is encrypted.", + "smithy.api#required": {} + } + }, + "passwordManager": { + "target": "com.vanta.manage_vanta#ComputerStatus", + "traits": { + "smithy.api#documentation": "Whether or not the computer has a password manager installed.", + "smithy.api#required": {} + } + }, + "antivirusInstallation": { + "target": "com.vanta.manage_vanta#ComputerStatus", + "traits": { + "smithy.api#documentation": "Whether or not the computer has antivirus software installed.", + "smithy.api#required": {} + } + }, + "operatingSystem": { + "target": "com.vanta.manage_vanta#OperatingSystem", + "traits": { + "smithy.api#documentation": "The computer's operating system name and version.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "owner": { + "target": "com.vanta.manage_vanta#Owner", + "traits": { + "smithy.api#documentation": "The name, unique identifier, and email address of the computer's owner.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "serialNumber": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The serial number of the computer. This value may be null if it is not reported by the device.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "udid": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The universal device id of the computer.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ComputerStatus": { + "type": "structure", + "members": { + "outcome": { + "target": "com.vanta.manage_vanta#ComputerStatusOutcome", + "traits": { + "smithy.api#documentation": "The outcome of the status check.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The a status check for a computer. Representation for screenlock, diskEncryption, passwordManager, and antivirusInstallation." + } + }, + "com.vanta.manage_vanta#ComputerStatusOutcome": { + "type": "enum", + "members": { + "FAIL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FAIL" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "NA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NA" + } + }, + "PASS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PASS" + } + } + }, + "traits": { + "smithy.api#documentation": "The possible outcomes of a status check. The outcome can be one of the following:\nFAIL: The check is failing.\nIN_PROGRESS: The check needs further data from the given computer in order to evaluate. The field(s) needed from a computer to calculate the ComputerStatusOutcome were null.\nNA: The check is not applicable for the given computer.\nPASS: The check is passing." + } + }, + "com.vanta.manage_vanta#OperatingSystem": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#OperatingSystemType", + "traits": { + "smithy.api#documentation": "The type of the operating system.", + "smithy.api#required": {} + } + }, + "version": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The version of the operating system.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The computer's operating system type and version." + } + }, + "com.vanta.manage_vanta#OperatingSystemType": { + "type": "enum", + "members": { + "MACOS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "macOS" + } + }, + "LINUX": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "linux" + } + }, + "WINDOWS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "windows" + } + } + }, + "traits": { + "smithy.api#documentation": "The possible types of the operating system. One of `mac_OS`, `linux`, or `windows`." + } + }, + "com.vanta.manage_vanta#PaginatedResponseMonitoredComputerResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#MonitoredComputer" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseMonitoredComputerResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseMonitoredComputerResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListMonitoredComputers": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListMonitoredComputersRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseMonitoredComputer" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/monitored-computers", + "code": 200 + }, + "smithy.api#documentation": "List monitored computers\n\nReturns a list of computers monitored by an MDM (with an integration built\nby Vanta) or by Vanta Device Monitor. Currently this list does not include\nresources from partner or customer-built integrations." + } + }, + "com.vanta.manage_vanta#GetMonitoredComputerRequest": { + "type": "structure", + "members": { + "computerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetMonitoredComputer": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetMonitoredComputerRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#MonitoredComputer" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/monitored-computers/{computerId}", + "code": 200 + }, + "smithy.api#documentation": "Get monitored computer by ID\n\nReturns a monitored computer by ID." + } + }, + "com.vanta.manage_vanta#ListPeopleRequestTasksSummaryStatusMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TasksSummaryStatus" + }, + "traits": {} + }, + "com.vanta.manage_vanta#TaskType": { + "type": "enum", + "members": { + "COMPLETE_TRAININGS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE_TRAININGS" + } + }, + "ACCEPT_POLICIES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCEPT_POLICIES" + } + }, + "COMPLETE_CUSTOM_TASKS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE_CUSTOM_TASKS" + } + }, + "COMPLETE_CUSTOM_OFFBOARDING_TASKS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE_CUSTOM_OFFBOARDING_TASKS" + } + }, + "INSTALL_DEVICE_MONITORING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INSTALL_DEVICE_MONITORING" + } + }, + "COMPLETE_BACKGROUND_CHECKS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE_BACKGROUND_CHECKS" + } + } + }, + "traits": { + "smithy.api#documentation": "The type a task summary falls into.\nCOMPLETE_TRAININGS: The task summary containing security trainings.\nACCEPT_POLICIES: The task summary containing policy acceptance.\nCOMPLETE_CUSTOM_TASKS: The task summary containing custom tasks.\nINSTALL_DEVICE_MONITORING: The task summary containing device monitoring installation.\nCOMPLETE_BACKGROUND_CHECKS: The task summary containing background checks." + } + }, + "com.vanta.manage_vanta#ListPeopleRequestTaskTypeMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TaskType" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListPeopleRequestTaskStatusMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TaskStatus" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListPeopleRequestGroupIdsMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListPeopleRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "tasksSummaryStatusMatchesAny": { + "target": "com.vanta.manage_vanta#ListPeopleRequestTasksSummaryStatusMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "tasksSummaryStatusMatchesAny", + "smithy.api#documentation": "Filter individuals by those whose tasksSummary status is any of the provided values." + } + }, + "taskTypeMatchesAny": { + "target": "com.vanta.manage_vanta#ListPeopleRequestTaskTypeMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "taskTypeMatchesAny", + "smithy.api#documentation": "Requires taskStatusMatchesAny. Includes all people for whom any of the provided taskType values in taskTypeMatchesAny\nis any of the provided taskStatus values in taskStatusMatchesAny." + } + }, + "taskStatusMatchesAny": { + "target": "com.vanta.manage_vanta#ListPeopleRequestTaskStatusMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "taskStatusMatchesAny", + "smithy.api#documentation": "Requires taskTypeMatchesAny. Includes all people for whom any of the provided taskType values in taskTypeMatchesAny\nis any of the provided taskStatus values in taskStatusMatchesAny." + } + }, + "emailAndNameFilter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "emailAndNameFilter", + "smithy.api#documentation": "Filter people by email address, first name, or last name (partial match, case-insensitive)." + } + }, + "groupIdsMatchesAny": { + "target": "com.vanta.manage_vanta#ListPeopleRequestGroupIdsMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "groupIdsMatchesAny", + "smithy.api#documentation": "Filter people matching any of the given group IDs." + } + }, + "employmentStatus": { + "target": "com.vanta.manage_vanta#EmploymentStatus", + "traits": { + "smithy.api#httpQuery": "employmentStatus", + "smithy.api#documentation": "Filter people matching the given employment status." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponsePerson": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponsePersonResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponsePersonResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Person" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponsePersonResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponsePersonResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListPeople": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListPeopleRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponsePerson" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/people", + "code": 200 + }, + "smithy.api#documentation": "List people\n\nReturns a list of all people." + } + }, + "com.vanta.manage_vanta#MarkAsNotPeopleRequestUpdatesItem": { + "type": "structure", + "members": { + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Reason for making this change.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the person to change", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#MarkAsNotPeopleRequestUpdatesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#MarkAsNotPeopleRequestUpdatesItem" + }, + "traits": { + "smithy.api#documentation": "List of account IDs to mark as not a person" + } + }, + "com.vanta.manage_vanta#MarkAsNotPeopleRequest": { + "type": "structure", + "members": { + "updates": { + "target": "com.vanta.manage_vanta#MarkAsNotPeopleRequestUpdatesList", + "traits": { + "smithy.api#documentation": "List of account IDs to mark as not a person", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#MarkAsNotPeople": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#MarkAsNotPeopleRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#BulkResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/people/mark-as-not-people", + "code": 200 + }, + "smithy.api#documentation": "Mark as not people\n\nMark a set of accounts on the People Page as \"not a person.\" As a result,\nthese accounts will not be treated as people in Vanta, and you will not be able to\nassign them tasks or use them in tests related to your company's personnel." + } + }, + "com.vanta.manage_vanta#MarkAsPeopleRequestUpdatesItem": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the person to change", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#MarkAsPeopleRequestUpdatesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#MarkAsPeopleRequestUpdatesItem" + }, + "traits": { + "smithy.api#documentation": "List of account IDs to mark as a person" + } + }, + "com.vanta.manage_vanta#MarkAsPeopleRequest": { + "type": "structure", + "members": { + "updates": { + "target": "com.vanta.manage_vanta#MarkAsPeopleRequestUpdatesList", + "traits": { + "smithy.api#documentation": "List of account IDs to mark as a person", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#MarkAsPeople": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#MarkAsPeopleRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#BulkResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/people/mark-as-people", + "code": 200 + }, + "smithy.api#documentation": "Mark as people\n\nMark a set of accounts on the People Page as \"people.\" As a result,\nthese accounts will be treated as people in Vanta, and you will be able to\nassign them tasks and use them in tests related to your company's personnel." + } + }, + "com.vanta.manage_vanta#OffboardPeopleRequestUpdatesItem": { + "type": "structure", + "members": { + "acknowledgerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the person who will be recorded as completing the offboarding for these people", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the person to offboard", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#OffboardPeopleRequestUpdatesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#OffboardPeopleRequestUpdatesItem" + }, + "traits": { + "smithy.api#documentation": "List of the people to offboard." + } + }, + "com.vanta.manage_vanta#OffboardPeopleRequest": { + "type": "structure", + "members": { + "updates": { + "target": "com.vanta.manage_vanta#OffboardPeopleRequestUpdatesList", + "traits": { + "smithy.api#documentation": "List of the people to offboard.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#OffboardPeople": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#OffboardPeopleRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#BulkResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/people/offboard", + "code": 200 + }, + "smithy.api#documentation": "Offboard people\n\nOffboard a list of people. A person is only eligible for offboarding completion when:\n1. They are an ex-employee.\n2. All of the person's monitored accounts are deactivated or manually overwritten as such.\n3. All of a person's custom offboarding tasks have been completed.\nAll of the person's unmonitored accounts will be automatically marked as deactivated when they\nare offboarded. If the person has unfinished offboarding tasks those will NOT automatically be\ncompleted and offboarding them will fail." + } + }, + "com.vanta.manage_vanta#GetPersonRequest": { + "type": "structure", + "members": { + "personId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetPerson": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetPersonRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Person" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/people/{personId}", + "code": 200 + }, + "smithy.api#documentation": "Get person by ID\n\nReturns a person by ID." + } + }, + "com.vanta.manage_vanta#UpdatePersonRequestName": { + "type": "structure", + "members": { + "last": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "first": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UpdatePersonRequestEmployment": { + "type": "structure", + "members": { + "startDate": { + "target": "smithy.api#String" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UpdatePersonRequest": { + "type": "structure", + "members": { + "personId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "com.vanta.manage_vanta#UpdatePersonRequestName" + }, + "employment": { + "target": "com.vanta.manage_vanta#UpdatePersonRequestEmployment" + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdatePerson": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdatePersonRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Person" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/people/{personId}", + "code": 200 + }, + "smithy.api#documentation": "Update person metadata\n\nUpdate a person's basic information." + } + }, + "com.vanta.manage_vanta#ClearLeaveForPersonRequest": { + "type": "structure", + "members": { + "personId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ClearLeaveForPerson": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ClearLeaveForPersonRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Person" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/people/{personId}/clear-leave", + "code": 200 + }, + "smithy.api#documentation": "Remove leave information\n\nRemove leave information on a person. The person will become active in Vanta, and will be considered in certain tests related to personnel." + } + }, + "com.vanta.manage_vanta#SetLeaveForPersonRequest": { + "type": "structure", + "members": { + "personId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "endDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The end date of the person's leave. If left empty, the leave is considered indefinite.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "startDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The start date of the person's leave.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#SetLeaveForPerson": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#SetLeaveForPersonRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Person" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/people/{personId}/set-leave", + "code": 200 + }, + "smithy.api#documentation": "Set leave information\n\nSet leave information on a person. A person on leave is inactive in Vanta and will not\nbe considered in certain personnel-related tests. If the person has existing leave information, it will be\ncleared and replaced." + } + }, + "com.vanta.manage_vanta#ListPoliciesRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponsePolicy": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponsePolicyResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Policy": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The policy's unique ID.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The policy's name.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The policy's description.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#PolicyStatus", + "traits": { + "smithy.api#documentation": "The policy's current status.", + "smithy.api#required": {} + } + }, + "approvedAtDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The policy's most recent date of approval, if applicable.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "latestVersion": { + "target": "com.vanta.manage_vanta#PolicyLatestVersion", + "traits": { + "smithy.api#documentation": "The latest version of the policy.", + "smithy.api#required": {} + } + }, + "latestApprovedVersion": { + "target": "com.vanta.manage_vanta#PolicyLatestApprovedVersion", + "traits": { + "smithy.api#documentation": "The latest approved version of the policy, if available.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PolicyStatus": { + "type": "enum", + "members": { + "OK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OK" + } + }, + "NEEDS_REMEDIATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NEEDS_REMEDIATION" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PolicyLatestVersion": { + "type": "structure", + "members": { + "status": { + "target": "com.vanta.manage_vanta#PolicyVersionStatus", + "traits": { + "smithy.api#documentation": "The status of the policy's latest version.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PolicyVersionStatus": { + "type": "enum", + "members": { + "NOT_STARTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_STARTED" + } + }, + "DRAFT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DRAFT" + } + }, + "PENDING_APPROVAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PENDING_APPROVAL" + } + }, + "APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPROVED" + } + }, + "RENEW_SOON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RENEW_SOON" + } + }, + "EXPIRED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXPIRED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PolicyLatestApprovedVersion": { + "type": "structure", + "members": { + "versionId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The ID of the latest approved version of the policy.", + "smithy.api#required": {} + } + }, + "documents": { + "target": "com.vanta.manage_vanta#PolicyLatestApprovedVersionDocumentsList", + "traits": { + "smithy.api#documentation": "Available document versions for this policy, organized by language.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PolicyDocument": { + "type": "structure", + "members": { + "language": { + "target": "com.vanta.manage_vanta#PolicyLocale", + "traits": { + "smithy.api#documentation": "The language of the policy document.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The slug ID of the policy document.", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The URL of the policy document.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PolicyLocale": { + "type": "enum", + "members": { + "CS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CS" + } + }, + "CY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CY" + } + }, + "DA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DA" + } + }, + "DE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DE" + } + }, + "EN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EN" + } + }, + "ES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ES" + } + }, + "FI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FI" + } + }, + "FR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FR" + } + }, + "HU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HU" + } + }, + "IS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IS" + } + }, + "IT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IT" + } + }, + "JA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "JA" + } + }, + "KO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "KO" + } + }, + "NL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NL" + } + }, + "NO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NO" + } + }, + "NOT_SPECIFIED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_SPECIFIED" + } + }, + "PL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PL" + } + }, + "PT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PT" + } + }, + "ET": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ET" + } + }, + "RO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RO" + } + }, + "AR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AR" + } + }, + "SK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SK" + } + }, + "SV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SV" + } + }, + "TR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TR" + } + }, + "ZH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ZH" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PolicyLatestApprovedVersionDocumentsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#PolicyDocument" + }, + "traits": { + "smithy.api#documentation": "Available document versions for this policy, organized by language." + } + }, + "com.vanta.manage_vanta#PaginatedResponsePolicyResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Policy" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponsePolicyResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponsePolicyResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListPolicies": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListPoliciesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponsePolicy" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/policies", + "code": 200 + }, + "smithy.api#documentation": "List policies\n\nLists all policies." + } + }, + "com.vanta.manage_vanta#GetPolicyRequest": { + "type": "structure", + "members": { + "policyId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetPolicy": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetPolicyRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Policy" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/policies/{policyId}", + "code": 200 + }, + "smithy.api#documentation": "Get policy by ID\n\nGets a policy by ID. Policy IDs can be found in Vanta in URL bar after /policies/." + } + }, + "com.vanta.manage_vanta#ListRiskScenarioRequestOwnerMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioRequestCategoryMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#CIA": { + "type": "enum", + "members": { + "CONFIDENTIALITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Confidentiality" + } + }, + "INTEGRITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Integrity" + } + }, + "AVAILABILITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Availability" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UNCATEGORIZED": { + "type": "enum", + "members": { + "UNCATEGORIZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Uncategorized" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioRequestCiaCategoryMatchesAnyItem": { + "type": "union", + "members": { + "CIA": { + "target": "com.vanta.manage_vanta#CIA" + }, + "UNCATEGORIZED": { + "target": "com.vanta.manage_vanta#UNCATEGORIZED" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioRequestCiaCategoryMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequestCiaCategoryMatchesAnyItem" + }, + "traits": {} + }, + "com.vanta.manage_vanta#Treatment": { + "type": "enum", + "members": { + "MITIGATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Mitigate" + } + }, + "TRANSFER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Transfer" + } + }, + "AVOID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Avoid" + } + }, + "ACCEPT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Accept" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#NOTREATMENTTYPE": { + "type": "enum", + "members": { + "NO_TREATMENT_TYPE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "No treatment type" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioRequestTreatmentTypeMatchesAnyItem": { + "type": "union", + "members": { + "Treatment": { + "target": "com.vanta.manage_vanta#Treatment" + }, + "NOTREATMENTTYPE": { + "target": "com.vanta.manage_vanta#NOTREATMENTTYPE" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioRequestTreatmentTypeMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequestTreatmentTypeMatchesAnyItem" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ScoreGroup": { + "type": "enum", + "members": { + "VERY_LOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Very low" + } + }, + "LOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Low" + } + }, + "MED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Med" + } + }, + "HIGH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "High" + } + }, + "CRITICAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Critical" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioRequestInherentScoreGroupMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ScoreGroup" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioRequestResidualScoreGroupMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ScoreGroup" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ReviewStatus": { + "type": "enum", + "members": { + "APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPROVED" + } + }, + "DRAFT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DRAFT" + } + }, + "NOT_REVIEWED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_REVIEWED" + } + }, + "AWAITING_SUBMISSION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AWAITING_SUBMISSION" + } + }, + "PENDING_APPROVAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PENDING_APPROVAL" + } + }, + "REQUESTED_CHANGES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "REQUESTED_CHANGES" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioRequestReviewStatusMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ReviewStatus" + }, + "traits": {} + }, + "com.vanta.manage_vanta#RiskScenarioType": { + "type": "enum", + "members": { + "RISK_SCENARIO": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Risk Scenario" + } + }, + "ENTERPRISE_RISK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Enterprise Risk" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioRequestOrderBy": { + "type": "enum", + "members": { + "DESCRIPTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "description" + } + }, + "CREATEDAT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "createdAt" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "includeIgnored": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "includeIgnored" + } + }, + "ownerMatchesAny": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequestOwnerMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "ownerMatchesAny", + "smithy.api#documentation": "Use \"No owner\" to filter scenarios without owner assigned." + } + }, + "searchString": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "searchString" + } + }, + "categoryMatchesAny": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequestCategoryMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "categoryMatchesAny", + "smithy.api#documentation": "Use \"Uncategorized\" to filter scenarios without any category." + } + }, + "ciaCategoryMatchesAny": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequestCiaCategoryMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "ciaCategoryMatchesAny", + "smithy.api#documentation": "Use \"Uncategorized\" to filter scenarios with none of Confidentiality, Integrity or Availability assigned." + } + }, + "treatmentTypeMatchesAny": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequestTreatmentTypeMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "treatmentTypeMatchesAny", + "smithy.api#documentation": "Use \"No treatment type\" to filter scenarios without treatment specified." + } + }, + "inherentScoreGroupMatchesAny": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequestInherentScoreGroupMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "inherentScoreGroupMatchesAny" + } + }, + "residualScoreGroupMatchesAny": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequestResidualScoreGroupMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "residualScoreGroupMatchesAny" + } + }, + "reviewStatusMatchesAny": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequestReviewStatusMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "reviewStatusMatchesAny" + } + }, + "type": { + "target": "com.vanta.manage_vanta#RiskScenarioType", + "traits": { + "smithy.api#httpQuery": "type", + "smithy.api#documentation": "Filter by risk scenario type. Defaults to \"Risk Scenario\".\nOnly returns enterprise risks when explicitly set to \"Enterprise Risk\"." + } + }, + "orderBy": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequestOrderBy", + "traits": { + "smithy.api#httpQuery": "orderBy", + "smithy.api#documentation": "Default to order by description alphabetically." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseRiskScenario": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseRiskScenarioResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#RiskScenario": { + "type": "structure", + "members": { + "riskId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique ID of the risk specified by the user. Used to reference and update existing risks.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "This describes an actual or potential risk to your organization's people, processes, technology, data, and facilities.\nDocument actual issues or likely scenarios based on your specific environment or a potential vulnerability.\n\nNaming note: in the UI, `description` is labelled \"Title\" and\n`detailedDescription` is labelled \"Description\". The field names\nare preserved for backwards compatibility with the public REST API\nand existing data.", + "smithy.api#required": {} + } + }, + "detailedDescription": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional long-form description providing extended context for the risk scenario.\nMaximum 10000 characters.\n\nNaming note: in the UI, `description` is labelled \"Title\" and\n`detailedDescription` is labelled \"Description\". The field names\nare preserved for backwards compatibility with the public REST API\nand existing data.", + "com.distilled.openapi#nullable": {} + } + }, + "isSensitive": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "If set to true this risk can only be seen by its owner or users with Admin, RiskSensitiveManage or RiskSensitiveView permissions.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "likelihood": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the probability of an incident occurring due to this risk or vulnerability, expressed as a numerical score.\nDefaults to a range of 1-5, where higher values indicate greater likelihood. The range can be customized in the Risk Management settings.\nA value of `null` indicates that no score has been assigned.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "impact": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the potential severity of harm to your organization’s operations if this risk is exploited, expressed as a numerical score.\nDefaults to a range of 1-5, where higher values indicate greater impact. The range can be customized in the Risk Management settings.\nA value of `null` indicates that no score has been assigned.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "residualLikelihood": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the adjusted probability of this risk being exploited or affecting operations after implementing risk treatments, such as controls or mitigations.\nExpressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings.\nA value of `null` indicates that no score has been assigned.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "residualImpact": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the adjusted severity of harm to your organization’s operations if this risk is exploited after implementing risk treatments, such as controls or mitigations.\nExpressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings.\nA value of `null` indicates that no score has been assigned.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "categories": { + "target": "com.vanta.manage_vanta#RiskScenarioCategoriesList", + "traits": { + "smithy.api#documentation": "The list of categories this risk scenario belongs to.", + "smithy.api#required": {} + } + }, + "ciaCategories": { + "target": "com.vanta.manage_vanta#RiskScenarioCiaCategoriesList", + "traits": { + "smithy.api#documentation": "A list of the following for the type of risk documented:\n- Confidentiality: Risk to data stores, customer/sensitive information, etc.\n- Integrity: Risk to accuracy or integrity of system settings and/or data\n- Availability: Risk to normal service operations and critical system functionality", + "smithy.api#required": {} + } + }, + "treatment": { + "target": "com.vanta.manage_vanta#Treatment", + "traits": { + "smithy.api#documentation": "Indicate how your leadership team wants to address an identified risk. Please note: not all risks need to be addressed immediately (or at all). Your Risk Treatment decision will depend on multiple factors, such as your organization's risk tolerance and the value of the asset that the risk is associated with. The options are:\n- Mitigate: Identify controls to put in place or tasks to be done that will reduce the risk score.\n- Transfer: Move risk outside of your organization's set of responsibilities e.g. get cyber liability insurance.\n- Avoid: Stop doing the activity which is causing the risk to your organization and its assets.\n- Accept: Decide to live with the risk and take no further actions. - Accept: decide to live with the risk; this may be because it is highly unlikely, has a low financial or operational impact, or the cost and effort to treat the risk far exceeds the value of the asset", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The email of the person responsible for tracking and mitigating this risk scenario.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "note": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Additional context about the risk scenario and why it has specific impact and likelihood scores.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "riskRegister": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the risk register associated with this scenario.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#RiskScenarioCustomFieldsList", + "traits": { + "smithy.api#documentation": "The list of custom fields.\nYou can reference existing custom fields in the Risk Management settings and/or create new ones.\nThe format is:\n- {label: \"field-name\", value: \"string-representation\"} for text, date, number and currency fields\n- {label: \"field-name\", value: [\"option1\", \"option2\"]} for picklist fields", + "smithy.api#required": {} + } + }, + "isArchived": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether this scenario is archived.", + "smithy.api#required": {} + } + }, + "reviewStatus": { + "target": "com.vanta.manage_vanta#ReviewStatus", + "traits": { + "smithy.api#documentation": "The current review status of this risk scenario", + "smithy.api#required": {} + } + }, + "requiredApprovers": { + "target": "com.vanta.manage_vanta#RiskScenarioRequiredApproversList", + "traits": { + "smithy.api#documentation": "The list of required approvers for this risk scenario.", + "smithy.api#required": {} + } + }, + "type": { + "target": "com.vanta.manage_vanta#RiskScenarioType", + "traits": { + "smithy.api#documentation": "The type of risk scenario.\n- \"Risk Scenario\": Standard risk scenario\n- \"Enterprise Risk\": Enterprise-level risk", + "smithy.api#required": {} + } + }, + "identificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date this risk was identified. Matches the \"Identified Date\" field in the Vanta UI. Set by the customer when a risk is created; defaults to the scenario's creation time when not explicitly provided.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#RiskScenarioCategoriesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The list of categories this risk scenario belongs to." + } + }, + "com.vanta.manage_vanta#RiskScenarioCiaCategoriesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CIA" + }, + "traits": { + "smithy.api#documentation": "A list of the following for the type of risk documented:\n- Confidentiality: Risk to data stores, customer/sensitive information, etc.\n- Integrity: Risk to accuracy or integrity of system settings and/or data\n- Availability: Risk to normal service operations and critical system functionality" + } + }, + "com.vanta.manage_vanta#CustomAttribute": { + "type": "structure", + "members": { + "label": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "value": { + "target": "com.vanta.manage_vanta#CustomAttributeValue", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomAttributeValueCase1List": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomAttributeValue": { + "type": "union", + "members": { + "Case0": { + "target": "smithy.api#String" + }, + "Case1": { + "target": "com.vanta.manage_vanta#CustomAttributeValueCase1List" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#RiskScenarioCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomAttribute" + }, + "traits": { + "smithy.api#documentation": "The list of custom fields.\nYou can reference existing custom fields in the Risk Management settings and/or create new ones.\nThe format is:\n- {label: \"field-name\", value: \"string-representation\"} for text, date, number and currency fields\n- {label: \"field-name\", value: [\"option1\", \"option2\"]} for picklist fields" + } + }, + "com.vanta.manage_vanta#RiskScenarioRequiredApproversList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The list of required approvers for this risk scenario." + } + }, + "com.vanta.manage_vanta#PaginatedResponseRiskScenarioResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#RiskScenario" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseRiskScenarioResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseRiskScenarioResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenario": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListRiskScenarioRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseRiskScenario" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/risk-scenarios", + "code": 200 + }, + "smithy.api#documentation": "List risk scenarios\n\nList risk scenarios." + } + }, + "com.vanta.manage_vanta#CreateRiskScenarioRequestCategoriesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The list of categories this risk scenario belongs to.\nEach element in the list will become a new custom category if it doesn't match an existing one.\nYou can reference the current category options in the Risk Management settings and/or enter new values." + } + }, + "com.vanta.manage_vanta#CreateRiskScenarioRequestCiaCategoriesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CIA" + }, + "traits": { + "smithy.api#documentation": "Enter a list of the following for the type of risk documented:\n- Confidentiality: Risk to data stores, customer/sensitive information, etc.\n- Integrity: Risk to accuracy or integrity of system settings and/or data\n- Availability: Risk to normal service operations and critical system functionality" + } + }, + "com.vanta.manage_vanta#CreateRiskScenarioRequestCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomAttribute" + }, + "traits": { + "smithy.api#documentation": "The list of custom attributes.\nYou can reference existing custom attributes in the Risk Management settings and/or create new ones.\nThe format is:\n- {label: \"field-name\", value: \"string-representation\"} for text, date, number and currency fields\n- {label: \"field-name\", value: [\"option1\", \"option2\"]} for picklist fields" + } + }, + "com.vanta.manage_vanta#CreateRiskScenarioRequest": { + "type": "structure", + "members": { + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "This describes an actual or potential risk to your organization's people, processes, technology, data, and facilities.\nDocument actual issues or likely scenarios based on your specific environment or a potential vulnerability.", + "smithy.api#required": {} + } + }, + "detailedDescription": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional long-form description providing extended context for the risk scenario.\nMaximum 10000 characters." + } + }, + "riskId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique ID of the risk. Used to reference and update existing risks.\nWe will auto-generate one if one isn't specified." + } + }, + "isSensitive": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "If set to true this risk can only be seen by its owner or users with Admin, RiskSensitiveManage or RiskSensitiveView permissions." + } + }, + "likelihood": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the probability of an incident occurring due to this risk or vulnerability, expressed as a numerical score.\nDefaults to a range of 1-5, where higher values indicate greater likelihood. The range can be customized in the Risk Management settings." + } + }, + "impact": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the potential severity of harm to your organization’s operations if this risk is exploited, expressed as a numerical score.\nDefaults to a range of 1-5, where higher values indicate greater impact. The range can be customized in the Risk Management settings." + } + }, + "residualLikelihood": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the adjusted probability of this risk being exploited or affecting operations after implementing risk treatments, such as controls or mitigations.\nExpressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings." + } + }, + "residualImpact": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the adjusted severity of harm to your organization’s operations if this risk is exploited after implementing risk treatments, such as controls or mitigations.\nExpressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings." + } + }, + "categories": { + "target": "com.vanta.manage_vanta#CreateRiskScenarioRequestCategoriesList", + "traits": { + "smithy.api#documentation": "The list of categories this risk scenario belongs to.\nEach element in the list will become a new custom category if it doesn't match an existing one.\nYou can reference the current category options in the Risk Management settings and/or enter new values." + } + }, + "ciaCategories": { + "target": "com.vanta.manage_vanta#CreateRiskScenarioRequestCiaCategoriesList", + "traits": { + "smithy.api#documentation": "Enter a list of the following for the type of risk documented:\n- Confidentiality: Risk to data stores, customer/sensitive information, etc.\n- Integrity: Risk to accuracy or integrity of system settings and/or data\n- Availability: Risk to normal service operations and critical system functionality" + } + }, + "treatment": { + "target": "com.vanta.manage_vanta#Treatment", + "traits": { + "smithy.api#documentation": "Indicate how your leadership team wants to address an identified risk. Please note: not all risks need to be addressed immediately (or at all). Your Risk Treatment decision will depend on multiple factors, such as your organization's risk tolerance and the value of the asset that the risk is associated with. The options are:\n- Mitigate: Identify controls to put in place or tasks to be done that will reduce the risk score.\n- Transfer: Move risk outside of your organization's set of responsibilities e.g. get cyber liability insurance.\n- Avoid: Stop doing the activity which is causing the risk to your organization and its assets.\n- Accept: Decide to live with the risk and take no further actions. - Accept: decide to live with the risk; this may be because it is highly unlikely, has a low financial or operational impact, or the cost and effort to treat the risk far exceeds the value of the asset" + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The person responsible for tracking and mitigating this risk scenario. This should be the email address of a valid Vanta user." + } + }, + "note": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Additional context about the risk scenario and why it has specific impact and likelihood scores." + } + }, + "riskRegister": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the risk register to associate with this scenario.\n\nThis field must be set if the organization has multiple registers." + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#CreateRiskScenarioRequestCustomFieldsList", + "traits": { + "smithy.api#documentation": "The list of custom attributes.\nYou can reference existing custom attributes in the Risk Management settings and/or create new ones.\nThe format is:\n- {label: \"field-name\", value: \"string-representation\"} for text, date, number and currency fields\n- {label: \"field-name\", value: [\"option1\", \"option2\"]} for picklist fields" + } + }, + "type": { + "target": "com.vanta.manage_vanta#RiskScenarioType", + "traits": { + "smithy.api#documentation": "The type of risk scenario to create.\n- \"Risk Scenario\": Standard risk scenario (default)\n- \"Enterprise Risk\": Enterprise-level risk (requires Enterprise Risk Management SKU)\n\nEnterprise risks cannot be associated with a risk register.\nDefaults to \"Risk Scenario\" if not specified." + } + }, + "identificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date this risk was identified. Matches the \"Identified Date\" field in the Vanta UI. Defaults to the scenario's creation time if omitted." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateRiskScenario": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateRiskScenarioRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#RiskScenario" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/risk-scenarios", + "code": 200 + }, + "smithy.api#documentation": "Create risk scenario\n\nCreate a new risk scenario." + } + }, + "com.vanta.manage_vanta#GetRiskScenarioRequest": { + "type": "structure", + "members": { + "riskScenarioId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetRiskScenario": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetRiskScenarioRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#RiskScenario" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/risk-scenarios/{riskScenarioId}", + "code": 200 + }, + "smithy.api#documentation": "Get risk scenario by ID\n\nGet a risk scenario by ID (can be the Risk ID or the object ID)." + } + }, + "com.vanta.manage_vanta#UpdateRiskScenarioRequestCategoriesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "The list of categories this risk scenario belongs to.\nEach element in the list will become a new custom category if it doesn't match an existing one.\nYou can reference the current category options in the Risk Management settings and/or enter new values." + } + }, + "com.vanta.manage_vanta#UpdateRiskScenarioRequestCiaCategoriesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CIA" + }, + "traits": { + "smithy.api#documentation": "Enter a list of the following for the type of risk documented:\n- Confidentiality: Risk to data stores, customer/sensitive information, etc.\n- Integrity: Risk to accuracy or integrity of system settings and/or data\n- Availability: Risk to normal service operations and critical system functionality" + } + }, + "com.vanta.manage_vanta#UpdateRiskScenarioRequestCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomAttribute" + }, + "traits": { + "smithy.api#documentation": "The list of custom fields.\nYou can reference custom fields in the Risk Management settings and/or create new one.\nThe format is:\n- {label: \"field-name\", value: \"string-representation\"} for text, date, number and currency fields\n- {label: \"field-name\", value: [\"option1\", \"option2\"]} for picklist fields" + } + }, + "com.vanta.manage_vanta#UpdateRiskScenarioRequest": { + "type": "structure", + "members": { + "riskScenarioId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "This describes an actual or potential risk to your organization's people, processes, technology, data, and facilities.\nDocument actual issues or likely scenarios based on your specific environment or a potential vulnerability." + } + }, + "detailedDescription": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional long-form description providing extended context for the risk scenario.\nMaximum 10000 characters." + } + }, + "isSensitive": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "If set to true this risk can only be seen by its owner or users with Admin, RiskSensitiveManage or RiskSensitiveView permissions." + } + }, + "likelihood": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the probability of an incident occurring due to this risk or vulnerability, expressed as a numerical score.\nDefaults to a range of 1-5, where higher values indicate greater likelihood. The range can be customized in the Risk Management settings." + } + }, + "impact": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the potential severity of harm to your organization’s operations if this risk is exploited, expressed as a numerical score.\nDefaults to a range of 1-5, where higher values indicate greater impact. The range can be customized in the Risk Management settings." + } + }, + "residualLikelihood": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the adjusted probability of this risk being exploited or affecting operations after implementing risk treatments, such as controls or mitigations.\nExpressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings." + } + }, + "residualImpact": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#documentation": "Represents the adjusted severity of harm to your organization’s operations if this risk is exploited after implementing risk treatments, such as controls or mitigations.\nExpressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings." + } + }, + "categories": { + "target": "com.vanta.manage_vanta#UpdateRiskScenarioRequestCategoriesList", + "traits": { + "smithy.api#documentation": "The list of categories this risk scenario belongs to.\nEach element in the list will become a new custom category if it doesn't match an existing one.\nYou can reference the current category options in the Risk Management settings and/or enter new values." + } + }, + "ciaCategories": { + "target": "com.vanta.manage_vanta#UpdateRiskScenarioRequestCiaCategoriesList", + "traits": { + "smithy.api#documentation": "Enter a list of the following for the type of risk documented:\n- Confidentiality: Risk to data stores, customer/sensitive information, etc.\n- Integrity: Risk to accuracy or integrity of system settings and/or data\n- Availability: Risk to normal service operations and critical system functionality" + } + }, + "treatment": { + "target": "com.vanta.manage_vanta#Treatment", + "traits": { + "smithy.api#documentation": "Indicate how your leadership team wants to address an identified risk. Please note: not all risks need to be addressed immediately (or at all). Your Risk Treatment decision will depend on multiple factors, such as your organization's risk tolerance and the value of the asset that the risk is associated with. The options are:\n- Mitigate: Identify controls to put in place or tasks to be done that will reduce the risk score.\n- Transfer: Move risk outside of your organization's set of responsibilities e.g. get cyber liability insurance.\n- Avoid: Stop doing the activity which is causing the risk to your organization and its assets.\n- Accept: Decide to live with the risk and take no further actions. - Accept: decide to live with the risk; this may be because it is highly unlikely, has a low financial or operational impact, or the cost and effort to treat the risk far exceeds the value of the asset" + } + }, + "owner": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The person responsible for tracking and mitigating this risk scenario. This should be the email address of a valid Vanta user.", + "com.distilled.openapi#nullable": {} + } + }, + "note": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Additional context about the risk scenario and why it has specific impact and likelihood scores." + } + }, + "riskRegister": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the risk register to associate with this scenario." + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#UpdateRiskScenarioRequestCustomFieldsList", + "traits": { + "smithy.api#documentation": "The list of custom fields.\nYou can reference custom fields in the Risk Management settings and/or create new one.\nThe format is:\n- {label: \"field-name\", value: \"string-representation\"} for text, date, number and currency fields\n- {label: \"field-name\", value: [\"option1\", \"option2\"]} for picklist fields" + } + }, + "type": { + "target": "com.vanta.manage_vanta#RiskScenarioType", + "traits": { + "smithy.api#documentation": "Changing the risk scenario type (`\"Risk Scenario\"` vs. `\"Enterprise Risk\"`)\nis not supported via update. Requests that include this field will be\nrejected. To change a risk's type, create a new scenario with the desired\ntype and archive the old one." + } + }, + "identificationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date this risk was identified. Matches the \"Identified Date\" field in the Vanta UI. Omitting the field leaves the existing value unchanged." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateRiskScenario": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateRiskScenarioRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#RiskScenario" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/risk-scenarios/{riskScenarioId}", + "code": 200 + }, + "smithy.api#documentation": "Update risk scenario\n\nUpdate a risk scenario." + } + }, + "com.vanta.manage_vanta#CancelRiskScenarioApprovalRequestRequest": { + "type": "structure", + "members": { + "riskScenarioId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CancelRiskScenarioApprovalRequest": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CancelRiskScenarioApprovalRequestRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#RiskScenario" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/risk-scenarios/{riskScenarioId}/cancel-approval-request", + "code": 200 + }, + "smithy.api#documentation": "Cancel risk scenario approval request\n\nCancel approval request for a risk scenario." + } + }, + "com.vanta.manage_vanta#ListRiskScenarioControlsRequest": { + "type": "structure", + "members": { + "riskScenarioId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseRiskScenarioControl": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseRiskScenarioControlResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#RiskScenarioControl": { + "type": "structure", + "members": { + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The control's shorthand identifier (e.g. `\"A.12.2.1\"`) when it has one,\nfalling back to the canonical Vanta control id (Mongo object id) otherwise.", + "smithy.api#required": {} + } + }, + "controlType": { + "target": "com.vanta.manage_vanta#RiskScenarioControlType", + "traits": { + "smithy.api#documentation": "`TREATMENT_PLAN` for controls that are part of the risk's treatment plan\n(planned mitigations); `EXISTING` for controls linked to the risk without a\ntreatment-plan designation.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A control's association with a risk scenario.\n\nThe relationship identity is `(riskScenarioId, controlId)`; `controlType`\nis mutable state on that relationship. A given control can have at most one\nassociation per risk scenario." + } + }, + "com.vanta.manage_vanta#RiskScenarioControlType": { + "type": "enum", + "members": { + "EXISTING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXISTING" + } + }, + "TREATMENT_PLAN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TREATMENT_PLAN" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseRiskScenarioControlResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#RiskScenarioControl" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseRiskScenarioControlResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseRiskScenarioControlResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListRiskScenarioControls": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListRiskScenarioControlsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseRiskScenarioControl" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/risk-scenarios/{riskScenarioId}/controls", + "code": 200 + }, + "smithy.api#documentation": "List risk scenario controls\n\nList the controls associated with a risk scenario.\n\nEach item is a `{ controlId, controlType }` relationship. `controlType` is\n`TREATMENT_PLAN` for controls that are part of the risk's treatment plan,\nand `EXISTING` for controls linked without a treatment-plan designation." + } + }, + "com.vanta.manage_vanta#CreateRiskScenarioControlRequest": { + "type": "structure", + "members": { + "riskScenarioId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Control to associate with the risk scenario. Accepts Vanta control\nshorthands (e.g. `\"A.12.2.1\"`), custom-control shorthand names, or\nobject IDs.", + "smithy.api#required": {} + } + }, + "controlType": { + "target": "com.vanta.manage_vanta#RiskScenarioControlType", + "traits": { + "smithy.api#documentation": "`TREATMENT_PLAN` for a control that is part of the risk's treatment plan.\nOmit (or pass `\"EXISTING\"`) to associate the control without a\ntreatment-plan designation — the default \"existing control\" relationship." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateRiskScenarioControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateRiskScenarioControlRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#RiskScenarioControl" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/risk-scenarios/{riskScenarioId}/controls", + "code": 200 + }, + "smithy.api#documentation": "Add a control to a risk scenario\n\nAssociate a control with a risk scenario.\n\nBody: `{ controlId, controlType? }`. `controlType` is `TREATMENT_PLAN`\nfor a control that is part of the risk's treatment plan; omit it (or pass\n`EXISTING`) to associate the control as a plain existing control.\n\n`controlId` may be a Vanta control shorthand, custom-control shorthand,\nor object ID; it resolves to a single canonical control before any write.\n\nBehavior on conflict with an existing association:\n- Same resolved control already associated with the same `controlType`:\n\n the request is a no-op and the existing relationship is returned (200).\n- Same resolved control associated with the other `controlType`: the\n\n request is rejected with a hint to use `PATCH` instead (422)." + } + }, + "com.vanta.manage_vanta#UpdateRiskScenarioControlRequest": { + "type": "structure", + "members": { + "riskScenarioId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlType": { + "target": "com.vanta.manage_vanta#RiskScenarioControlType", + "traits": { + "smithy.api#documentation": "The new relationship state. `TREATMENT_PLAN` moves the control into the\nrisk's treatment plan; `EXISTING` removes it from the treatment plan while\nkeeping it linked as an existing control (use DELETE to unlink entirely).", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateRiskScenarioControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateRiskScenarioControlRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#RiskScenarioControl" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/risk-scenarios/{riskScenarioId}/controls/{controlId}", + "code": 200 + }, + "smithy.api#documentation": "Change a risk scenario control's controlType\n\nChange the `controlType` on an existing risk-scenario / control\nassociation.\n\nBody: `{ controlType }`. The server atomically moves the resolved control\nbetween the treatment-plan and existing-control sets in a single update —\nthere is no intermediate unlinked state. `PATCH { \"controlType\": \"EXISTING\" }`\nremoves the control from the treatment plan but keeps it linked as an\nexisting control; use `DELETE` to unlink it entirely.\n\nReturns 404 if the control is not currently associated with the scenario.\nSetting the `controlType` it already has is a 200 no-op." + } + }, + "com.vanta.manage_vanta#DeleteRiskScenarioControlRequest": { + "type": "structure", + "members": { + "riskScenarioId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteRiskScenarioControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteRiskScenarioControlRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/risk-scenarios/{riskScenarioId}/controls/{controlId}", + "code": 200 + }, + "smithy.api#documentation": "Remove a control from a risk scenario\n\nRemove a control from a risk scenario.\n\nFully unlinks the control regardless of whether it is currently a\n`TREATMENT_PLAN` or an `EXISTING` control. To only drop the\ntreatment-plan designation while keeping the control linked, use\n`PATCH { \"controlType\": \"EXISTING\" }` instead. Deleting an already-unlinked\ncontrol is an idempotent no-op (204)." + } + }, + "com.vanta.manage_vanta#SubmitRiskForApprovalRequest": { + "type": "structure", + "members": { + "riskScenarioId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "comment": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional comment to include with the approval request." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#SubmitRiskForApproval": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#SubmitRiskForApprovalRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#RiskScenario" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/risk-scenarios/{riskScenarioId}/submit-for-approval", + "code": 200 + }, + "smithy.api#documentation": "Submit risk scenario for approval\n\nSubmit a risk scenario for approval." + } + }, + "com.vanta.manage_vanta#TestCategory": { + "type": "enum", + "members": { + "ACCOUNTS_ACCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCOUNTS_ACCESS" + } + }, + "ACCOUNT_SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCOUNT_SECURITY" + } + }, + "ACCOUNT_SETUP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCOUNT_SETUP" + } + }, + "COMPUTERS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPUTERS" + } + }, + "CUSTOM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CUSTOM" + } + }, + "DATA_STORAGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DATA_STORAGE" + } + }, + "EMPLOYEES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EMPLOYEES" + } + }, + "INFRASTRUCTURE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INFRASTRUCTURE" + } + }, + "IT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IT" + } + }, + "LOGGING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LOGGING" + } + }, + "MONITORING_ALERTS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MONITORING_ALERTS" + } + }, + "PEOPLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PEOPLE" + } + }, + "POLICIES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "POLICIES" + } + }, + "RISK_ANALYSIS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RISK_ANALYSIS" + } + }, + "SECURITY_ALERT_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY_ALERT_MANAGEMENT" + } + }, + "SOFTWARE_DEVELOPMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SOFTWARE_DEVELOPMENT" + } + }, + "VENDORS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VENDORS" + } + }, + "VULNERABILITY_MANAGEMENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VULNERABILITY_MANAGEMENT" + } + } + }, + "traits": { + "smithy.api#documentation": "Categories for tests." + } + }, + "com.vanta.manage_vanta#ListTestsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "statusFilter": { + "target": "com.vanta.manage_vanta#TestStatus", + "traits": { + "smithy.api#httpQuery": "statusFilter", + "smithy.api#documentation": "Filter tests by test status.\nPossible values: OK (Test passed), DEACTIVATED (Test is deactivated), NEEDS_ATTENTION (Test failed), IN_PROGRESS (Test is in progress), INVALID (Test is invalid), NOT_APPLICABLE (Test is not applicable)" + } + }, + "frameworkFilter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "frameworkFilter", + "smithy.api#documentation": "Filter tests by framework." + } + }, + "integrationFilter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "integrationFilter", + "smithy.api#documentation": "Filter tests by integration." + } + }, + "controlFilter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "controlFilter", + "smithy.api#documentation": "Filter tests by control ID." + } + }, + "ownerFilter": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "ownerFilter", + "smithy.api#documentation": "Filter tests by owner ID." + } + }, + "categoryFilter": { + "target": "com.vanta.manage_vanta#TestCategory", + "traits": { + "smithy.api#httpQuery": "categoryFilter", + "smithy.api#documentation": "Filter tests by category." + } + }, + "isInRollout": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "isInRollout", + "smithy.api#documentation": "Filter tests by rollout status.\nA test in rollout is an upcoming test that does not have its history tracked yet." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ListTests": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTestsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTest" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/tests", + "code": 200 + }, + "smithy.api#documentation": "List tests\n\nLists all tests based on applied filters." + } + }, + "com.vanta.manage_vanta#GetTestRequest": { + "type": "structure", + "members": { + "testId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTest": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTestRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Test" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/tests/{testId}", + "code": 200 + }, + "smithy.api#documentation": "Get test by ID\n\nGets a test by ID. Test IDs can be found in Vanta in URL bar after /tests/." + } + }, + "com.vanta.manage_vanta#EntityStatus": { + "type": "enum", + "members": { + "FAILING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FAILING" + } + }, + "DEACTIVATED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DEACTIVATED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetTestEntitiesRequest": { + "type": "structure", + "members": { + "testId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "entityStatus": { + "target": "com.vanta.manage_vanta#EntityStatus", + "traits": { + "smithy.api#httpQuery": "entityStatus", + "smithy.api#documentation": "The status of the test entities. Defaults to FAILING.\nPossible values: FAILING, DEACTIVATED" + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTestResourceEntity": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTestResourceEntityResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TestResourceEntity": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The identifier for the entity.", + "smithy.api#required": {} + } + }, + "entityStatus": { + "target": "com.vanta.manage_vanta#EntityStatus", + "traits": { + "smithy.api#documentation": "The status of the entity.\nSupports either FAILING or DEACTIVATED entities.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The display name of the entity.", + "smithy.api#required": {} + } + }, + "responseType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The response type of the entity.", + "smithy.api#required": {} + } + }, + "deactivatedReason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The reason for deactivation.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "lastUpdatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date of the last update to the test entity.\nFalls back to the test run date if there is no remediation timeline.", + "smithy.api#required": {} + } + }, + "createdDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date where the test entity was first detected.\nFalls back to the test run date if there is no remediation timeline.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTestResourceEntityResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TestResourceEntity" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTestResourceEntityResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTestResourceEntityResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetTestEntities": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTestEntitiesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTestResourceEntity" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/tests/{testId}/entities", + "code": 200 + }, + "smithy.api#documentation": "Get test entities by test ID\n\nGets a list of tested items (entities) for a test by test ID. An entity is a tested item that can have its own outcome.\nFor example, for a test that makes sure that all S3 buckets are versioned, an individual S3 bucket would be an entity." + } + }, + "com.vanta.manage_vanta#DeactivateTestEntityRequest": { + "type": "structure", + "members": { + "testId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "entityId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "deactivateReason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Reason for deactivating the entity.", + "smithy.api#required": {} + } + }, + "deactivateUntilDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date until which the entity should be deactivated. If not provided, the entity will be deactivated indefinitely." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeactivateTestEntity": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeactivateTestEntityRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/tests/{testId}/entities/{entityId}/deactivate", + "code": 200 + }, + "smithy.api#documentation": "Deactivate test entity\n\nDeactivates a single test item (test entity).\nThere may be a delay in the deactivation of the test entity until the next test run.\nUse the /vulnerabilities/deactivate endpoint for vulnerabilities." + } + }, + "com.vanta.manage_vanta#ReactivateTestEntityRequest": { + "type": "structure", + "members": { + "testId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "entityId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ReactivateTestEntity": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ReactivateTestEntityRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/tests/{testId}/entities/{entityId}/reactivate", + "code": 200 + }, + "smithy.api#documentation": "Reactivate test entity\n\nReactivates a single tested item (test entity).\nThere may be a delay in the reactivation of the test entity until the next test run.\nUse the /vulnerabilities/reactivate endpoint for vulnerabilities." + } + }, + "com.vanta.manage_vanta#GetTrustCenterRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#TrustCenter": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the Trust Center.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Custom title set for the Trust Center.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "companyDescription": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Company description displayed in the Trust Center header.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "privacyPolicy": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "URL of the Trust Center company's privacy policy.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "awsMarketplaceListing": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "URL of the Trust Center company's AWS Marketplace listing.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "customDomain": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Custom domain that the Trust Center can be found at, e.g. trust.vanta.com.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "isPublic": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Trust Center is public.", + "smithy.api#required": {} + } + }, + "bannerSetting": { + "target": "com.vanta.manage_vanta#TrustCenterBannerSetting", + "traits": { + "smithy.api#documentation": "Information about the Trust Center's banner.", + "smithy.api#required": {} + } + }, + "customTheme": { + "target": "com.vanta.manage_vanta#TrustCenterCustomTheme", + "traits": { + "smithy.api#documentation": "Custom theme colors chosen for the Trust Center.", + "smithy.api#required": {} + } + }, + "contactEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Contact email displayed on the Trust Center.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "customHeading": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Custom heading displayed on the Trust Center.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "controlVisibilityMode": { + "target": "com.vanta.manage_vanta#TrustCenterControlVisibilityMode", + "traits": { + "smithy.api#documentation": "The default status-visibility mode applied to all controls that don't\nhave a category-level override. Always `SHOW_ALL_WITHOUT_STATUS` for\ndomains without the Vanta Compliance Platform, which have no control\nstatus to render.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the Trust Center was created.", + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the Trust Center was last updated.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#BannerSetting": { + "type": "enum", + "members": { + "CUSTOM_IMAGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CUSTOM_IMAGE" + } + }, + "GRADIENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GRADIENT" + } + }, + "MINIMAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MINIMAL" + } + }, + "VANTA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VANTA" + } + } + }, + "traits": { + "smithy.api#documentation": "Possible banner settings for the Trust Center.\n- CUSTOM_IMAGE: Banner is a custom uploaded image.\n- GRADIENT: Banner is a gradient between two colors.\n- MINIMAL: No banner.\n- VANTA: Legacy Vanta-themed banner. No longer selectable as a banner style." + } + }, + "com.vanta.manage_vanta#TrustCenterBannerSetting": { + "type": "structure", + "members": { + "endColor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "End color of the banner. Only applies if setting is GRADIENT.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "startColor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Start color of the banner. Only applies if setting is GRADIENT.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "setting": { + "target": "com.vanta.manage_vanta#BannerSetting", + "traits": { + "smithy.api#documentation": "Banner setting option.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Information about the Trust Center's banner." + } + }, + "com.vanta.manage_vanta#TrustCenterCustomTheme": { + "type": "structure", + "members": { + "secondary": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Secondary color selected for the theme.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "primary": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Primary color selected for the theme.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Custom theme colors chosen for the Trust Center." + } + }, + "com.vanta.manage_vanta#TrustCenterControlVisibilityMode": { + "type": "enum", + "members": { + "SHOW_OK_ONLY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SHOW_OK_ONLY" + } + }, + "SHOW_OK_AND_UNMAPPED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SHOW_OK_AND_UNMAPPED" + } + }, + "SHOW_ALL_WITHOUT_STATUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SHOW_ALL_WITHOUT_STATUS" + } + }, + "SHOW_ALL_WITH_STATUS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SHOW_ALL_WITH_STATUS" + } + } + }, + "traits": { + "smithy.api#documentation": "Which controls a Trust Center displays, and whether their pass/fail status is\nshown. Set as the Trust Center's global default, or per category to override\nthat default." + } + }, + "com.vanta.manage_vanta#GetTrustCenter": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenter" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center\n\nGets a Trust Center by slug ID." + } + }, + "com.vanta.manage_vanta#ApiSelectableBannerSetting": { + "type": "union", + "members": { + "BannerSettingGRADIENT": { + "target": "com.vanta.manage_vanta#BannerSettingGRADIENT" + }, + "BannerSettingMINIMAL": { + "target": "com.vanta.manage_vanta#BannerSettingMINIMAL" + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#BannerSettingGRADIENT": { + "type": "enum", + "members": { + "GRADIENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GRADIENT" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#BannerSettingMINIMAL": { + "type": "enum", + "members": { + "MINIMAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MINIMAL" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UpdateTrustCenterRequestBannerSetting": { + "type": "structure", + "members": { + "endColor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "End color of the banner. Only applies if setting is GRADIENT." + } + }, + "startColor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Start color of the banner. Only applies if setting is GRADIENT." + } + }, + "setting": { + "target": "com.vanta.manage_vanta#ApiSelectableBannerSetting", + "traits": { + "smithy.api#documentation": "The banner style to use. Must be one of \"GRADIENT\" or \"MINIMAL\".", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The banner configuration of the Trust Center." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterRequestCustomTheme": { + "type": "structure", + "members": { + "secondary": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Secondary color for the theme. If null is passed in, resets to default.", + "com.distilled.openapi#nullable": {} + } + }, + "primary": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Primary color for the theme. If null is passed in, resets to default.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The custom theme configuration for the Trust Center." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Custom title for the Trust Center. If null is passed in, the current\ncustom title is unset and the default title is restored.", + "com.distilled.openapi#nullable": {} + } + }, + "companyDescription": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Company description displayed in the Trust Center header. If null is passed\nin, the current company description is unset.", + "com.distilled.openapi#nullable": {} + } + }, + "bannerSetting": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterRequestBannerSetting", + "traits": { + "smithy.api#documentation": "The banner configuration of the Trust Center." + } + }, + "customTheme": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterRequestCustomTheme", + "traits": { + "smithy.api#documentation": "The custom theme configuration for the Trust Center." + } + }, + "privacyPolicy": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Privacy policy URL to set on the Trust Center. If null is passed in, unsets\nthe current privacy policy.", + "com.distilled.openapi#nullable": {} + } + }, + "awsMarketplaceListing": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "AWS Marketplace listing URL to set on the Trust Center. If null is passed\nin, unsets the current AWS Marketplace listing.", + "com.distilled.openapi#nullable": {} + } + }, + "isPublic": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the Trust Center is public or not." + } + }, + "contactEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Contact email displayed on the Trust Center. If null is passed in, unsets\nthe current contact email.", + "com.distilled.openapi#nullable": {} + } + }, + "customHeading": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Custom heading displayed on the Trust Center. If null is passed in, unsets\nthe current custom heading.", + "com.distilled.openapi#nullable": {} + } + }, + "controlVisibilityMode": { + "target": "com.vanta.manage_vanta#TrustCenterControlVisibilityMode", + "traits": { + "smithy.api#documentation": "The default status-visibility mode applied to all controls that don't\nhave a category-level override. Omit to leave unchanged. Only settable for\ndomains with the Vanta Compliance Platform; other domains have no control\nstatus to render." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenter": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenter" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}", + "code": 200 + }, + "smithy.api#documentation": "Update Trust Center\n\nUpdates a Trust Center by slug ID." + } + }, + "com.vanta.manage_vanta#ListTrustCenterAccessRequestsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequest": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequestResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterAccessRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the access request.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the requester.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the requester.", + "smithy.api#required": {} + } + }, + "companyName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the requester's company.", + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Reason for the access request.", + "smithy.api#required": {} + } + }, + "requestedResources": { + "target": "com.vanta.manage_vanta#TrustCenterAccessRequestRequestedResourcesList", + "traits": { + "smithy.api#documentation": "IDs for the resources that the viewer requested access to.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "accessLevel": { + "target": "com.vanta.manage_vanta#ViewerAccessLevel", + "traits": { + "smithy.api#documentation": "Access level that the viewer requested.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the access request was created.", + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the access request was last updated.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterAccessRequestRequestedResourcesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs for the resources that the viewer requested access to." + } + }, + "com.vanta.manage_vanta#ViewerAccessLevel": { + "type": "enum", + "members": { + "FULL_ACCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FULL_ACCESS" + } + }, + "PARTIAL_ACCESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PARTIAL_ACCESS" + } + } + }, + "traits": { + "smithy.api#documentation": "The access level of the viewer.\nFULL_ACCESS means having access to all resources on the trust center.\nPARTIAL_ACCESS means having access to all public resources and a select list of requestable resources." + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequestResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterAccessRequest" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequestResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequestResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterAccessRequests": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterAccessRequestsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequest" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/access-requests", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center access requests\n\nGets a list of access requests for a Trust Center." + } + }, + "com.vanta.manage_vanta#GetTrustCenterAccessRequestRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "accessRequestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterAccessRequest": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterAccessRequestRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterAccessRequest" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/access-requests/{accessRequestId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center access request\n\nGets a specific access request for a Trust Center." + } + }, + "com.vanta.manage_vanta#ApproveTrustCenterAccessRequestRequestResourceIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Identifiers for the resources that this viewer should have access to. If\nthis field is omitted, the viewer will have access to all resources that\nthey requested." + } + }, + "com.vanta.manage_vanta#ApproveTrustCenterAccessRequestRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "accessRequestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date access should expire for this viewer. If a date isn't provided,\naccess will not expire." + } + }, + "isNdaRequired": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether to require an NDA for the viewer. Defaults to true." + } + }, + "resourceIds": { + "target": "com.vanta.manage_vanta#ApproveTrustCenterAccessRequestRequestResourceIdsList", + "traits": { + "smithy.api#documentation": "Identifiers for the resources that this viewer should have access to. If\nthis field is omitted, the viewer will have access to all resources that\nthey requested." + } + }, + "accessLevel": { + "target": "com.vanta.manage_vanta#ViewerAccessLevel", + "traits": { + "smithy.api#documentation": "Approved access level of the viewer. If this field is omitted, the viewer\nwill have the access level they requested." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ApproveTrustCenterAccessRequest": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ApproveTrustCenterAccessRequestRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/access-requests/{accessRequestId}/approve", + "code": 200 + }, + "smithy.api#documentation": "Approve Trust Center access request\n\nApproves an access request on a Trust Center." + } + }, + "com.vanta.manage_vanta#DenyTrustCenterAccessRequestRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "accessRequestId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Reason for denying the access request." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DenyTrustCenterAccessRequest": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DenyTrustCenterAccessRequestRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/access-requests/{accessRequestId}/deny", + "code": 200 + }, + "smithy.api#documentation": "Deny Trust Center access request\n\nDenies an access request on a Trust Center." + } + }, + "com.vanta.manage_vanta#ActivityEventType": { + "type": "enum", + "members": { + "PAGE_VIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PAGE_VIEW" + } + }, + "RESOURCE_DOWNLOAD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RESOURCE_DOWNLOAD" + } + }, + "RESOURCE_VIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RESOURCE_VIEW" + } + }, + "VIDEO_PLAY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VIDEO_PLAY" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterActivityEventsRequestEventTypesMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ActivityEventType" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterActivityEventsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "eventTypesMatchesAny": { + "target": "com.vanta.manage_vanta#ListTrustCenterActivityEventsRequestEventTypesMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "eventTypesMatchesAny" + } + }, + "afterDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "afterDate", + "smithy.api#documentation": "Only include activity events that occurred on or after the specified date and time." + } + }, + "beforeDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "beforeDate", + "smithy.api#documentation": "Only include activity events that occurred before the specified date and time." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterActivityEvent": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterActivityEventResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterActivityEvent": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the activity event.", + "smithy.api#required": {} + } + }, + "date": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date and time the event occurred.", + "smithy.api#required": {} + } + }, + "eventType": { + "target": "com.vanta.manage_vanta#ActivityEventType", + "traits": { + "smithy.api#documentation": "The type of activity event this is.", + "smithy.api#required": {} + } + }, + "details": { + "target": "com.vanta.manage_vanta#TrustCenterActivityEventDetails", + "traits": { + "smithy.api#documentation": "Additional details about the event. Details vary based on event type.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "viewerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the viewer who produced the event.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "viewerEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the viewer who produced the event.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "city": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "City from which the request originated.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "countryCode": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Country code from which the request originated.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterPage": { + "type": "enum", + "members": { + "COMPLIANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLIANCE" + } + }, + "CONTROLS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTROLS" + } + }, + "FAQ": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FAQ" + } + }, + "MEDIA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MEDIA" + } + }, + "OVERVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OVERVIEW" + } + }, + "RESOURCES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RESOURCES" + } + }, + "SUBPROCESSORS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SUBPROCESSORS" + } + }, + "UPDATES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UPDATES" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterActivityEventDetailsCase0": { + "type": "structure", + "members": { + "page": { + "target": "com.vanta.manage_vanta#TrustCenterPage", + "traits": { + "smithy.api#documentation": "Page that was viewed.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterActivityEventDetailsCase1": { + "type": "structure", + "members": { + "resourceName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title of the resource that this event pertains to.", + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the resource that this event pertains to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterActivityEventDetailsCase2": { + "type": "structure", + "members": { + "videoTitle": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title of the video that was played.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterActivityEventDetails": { + "type": "union", + "members": { + "Case0": { + "target": "com.vanta.manage_vanta#TrustCenterActivityEventDetailsCase0" + }, + "Case1": { + "target": "com.vanta.manage_vanta#TrustCenterActivityEventDetailsCase1" + }, + "Case2": { + "target": "com.vanta.manage_vanta#TrustCenterActivityEventDetailsCase2" + } + }, + "traits": { + "smithy.api#documentation": "Additional details about the event. Details vary based on event type." + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterActivityEventResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterActivityEvent" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterActivityEventResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterActivityEventResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterActivityEvents": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterActivityEventsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterActivityEvent" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/activity", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center viewer activity events\n\nGets a list of viewer activity events on a Trust Center." + } + }, + "com.vanta.manage_vanta#ListChatbotConversationsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "searchString": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "searchString", + "smithy.api#documentation": "Search conversations by message content." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterChatbotConversation": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterChatbotConversationResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterChatbotConversation": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the conversation.", + "smithy.api#required": {} + } + }, + "firstMessage": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The user's first message in the conversation.", + "smithy.api#required": {} + } + }, + "numMessages": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Total number of messages in the conversation.", + "smithy.api#required": {} + } + }, + "userEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email address of the user who started the conversation, or null for public conversations.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "isPublicConversation": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether this conversation occurred on a public chatbot.", + "smithy.api#required": {} + } + }, + "createdAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date and time the conversation was created.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterChatbotConversationResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterChatbotConversation" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterChatbotConversationResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterChatbotConversationResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListChatbotConversations": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListChatbotConversationsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterChatbotConversation" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/chatbot/conversations", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center chatbot conversations\n\nGets a paginated list of chatbot conversations on a Trust Center." + } + }, + "com.vanta.manage_vanta#GetChatbotConversationMessagesRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "conversationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterChatbotMessage": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterChatbotMessageResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterChatbotMessage": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the message.", + "smithy.api#required": {} + } + }, + "role": { + "target": "com.vanta.manage_vanta#ChatbotMessageRole", + "traits": { + "smithy.api#documentation": "The role of the message sender.", + "smithy.api#required": {} + } + }, + "message": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The message content.", + "smithy.api#required": {} + } + }, + "createdAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date and time the message was created.", + "smithy.api#required": {} + } + }, + "references": { + "target": "com.vanta.manage_vanta#TrustCenterChatbotMessageReferencesList", + "traits": { + "smithy.api#documentation": "Resource IDs referenced by this message.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ChatbotMessageRole": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USER" + } + }, + "ASSISTANT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ASSISTANT" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterChatbotMessageReferencesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Resource IDs referenced by this message." + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterChatbotMessageResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterChatbotMessage" + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetChatbotConversationMessages": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetChatbotConversationMessagesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterChatbotMessage" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/chatbot/conversations/{conversationId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center chatbot conversation messages\n\nGets the messages for a specific chatbot conversation on a Trust Center." + } + }, + "com.vanta.manage_vanta#ListComplianceFrameworksRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterComplianceFramework": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterComplianceFrameworkResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterComplianceFramework": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the framework.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the framework.", + "smithy.api#required": {} + } + }, + "standard": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Compliance standard associated with this framework.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the framework.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterComplianceFrameworkResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterComplianceFramework" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListComplianceFrameworks": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListComplianceFrameworksRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterComplianceFramework" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/compliance-frameworks", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center compliance frameworks\n\nGets the list of compliance frameworks on a Trust Center." + } + }, + "com.vanta.manage_vanta#CreateComplianceFrameworkRequestStandard": { + "type": "enum", + "members": { + "AIACT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "aiact" + } + }, + "AIUC1": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "aiuc1" + } + }, + "AUE8": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "aue8" + } + }, + "AWSFTR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "awsFTR" + } + }, + "BSIC5": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "bsic5" + } + }, + "CCPA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ccpa" + } + }, + "CISV8": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "cisv8" + } + }, + "CJIS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "cjis" + } + }, + "CMMC2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "cmmc2" + } + }, + "CPS234": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "cps234" + } + }, + "CRI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "cri" + } + }, + "DORA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "dora" + } + }, + "FEDRAMPR5": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "fedRAMPr5" + } + }, + "FEDRAMP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "fedramp" + } + }, + "FEDRAMP20X": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "fedramp20x" + } + }, + "FEDRAMP20X_2026": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "fedramp20x_2026" + } + }, + "GDPR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "gdpr" + } + }, + "HIPAA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "hipaa" + } + }, + "HITRUSTE1": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "hitruste1" + } + }, + "ISO9001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso9001" + } + }, + "ISO27001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27001" + } + }, + "ISO27001_2022": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27001_2022" + } + }, + "ISO27017": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27017" + } + }, + "ISO27018": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27018" + } + }, + "ISO27701": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27701" + } + }, + "ISO27701_2025": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27701_2025" + } + }, + "ISO42001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso42001" + } + }, + "MSFTSSPA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "msftSSPA" + } + }, + "MVSP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "mvsp" + } + }, + "NIS2D": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nis2d" + } + }, + "NIST53": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nist53" + } + }, + "NIST171": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nist171" + } + }, + "NIST171R3": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nist171r3" + } + }, + "NISTAIRMF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nistAiRmf" + } + }, + "NISTCSF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nistCSF" + } + }, + "NISTCSF2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nistcsf2" + } + }, + "OFDSS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ofdss" + } + }, + "PCIDSS4": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pciDss4" + } + }, + "PCISAQA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pciSaqA" + } + }, + "PCISAQAEP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pciSaqAEP" + } + }, + "PCISAQDMERCHANT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pciSaqDMerchant" + } + }, + "PCISAQDSP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pciSaqDSP" + } + }, + "SOC2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "soc2" + } + }, + "SOXITGC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "soxITGC" + } + }, + "T23NYCRR500": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "t23nycrr500" + } + }, + "TISAX": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "tisax" + } + }, + "TISAX2027": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "tisax2027" + } + }, + "ISO22301": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso22301" + } + }, + "TRUST": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "trust" + } + }, + "UKCYBERESSENTIALS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ukCyberEssentials" + } + }, + "UKCYBERESSENTIALS33": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ukCyberEssentials33" + } + }, + "USDATAPRIVACY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "usDataPrivacy" + } + }, + "FEDRAMPKSI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "fedrampKSI" + } + } + }, + "traits": { + "smithy.api#documentation": "Compliance standard to associate with this framework." + } + }, + "com.vanta.manage_vanta#CreateComplianceFrameworkRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the framework.", + "smithy.api#required": {} + } + }, + "standard": { + "target": "com.vanta.manage_vanta#CreateComplianceFrameworkRequestStandard", + "traits": { + "smithy.api#documentation": "Compliance standard to associate with this framework.", + "com.distilled.openapi#nullable": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the framework." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateComplianceFramework": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateComplianceFrameworkRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterComplianceFramework" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/compliance-frameworks", + "code": 200 + }, + "smithy.api#documentation": "Create Trust Center compliance framework\n\nAdds a compliance framework to a Trust Center." + } + }, + "com.vanta.manage_vanta#UpdateComplianceFrameworkRequestStandard": { + "type": "enum", + "members": { + "AIACT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "aiact" + } + }, + "AIUC1": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "aiuc1" + } + }, + "AUE8": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "aue8" + } + }, + "AWSFTR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "awsFTR" + } + }, + "BSIC5": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "bsic5" + } + }, + "CCPA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ccpa" + } + }, + "CISV8": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "cisv8" + } + }, + "CJIS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "cjis" + } + }, + "CMMC2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "cmmc2" + } + }, + "CPS234": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "cps234" + } + }, + "CRI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "cri" + } + }, + "DORA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "dora" + } + }, + "FEDRAMPR5": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "fedRAMPr5" + } + }, + "FEDRAMP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "fedramp" + } + }, + "FEDRAMP20X": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "fedramp20x" + } + }, + "FEDRAMP20X_2026": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "fedramp20x_2026" + } + }, + "GDPR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "gdpr" + } + }, + "HIPAA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "hipaa" + } + }, + "HITRUSTE1": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "hitruste1" + } + }, + "ISO9001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso9001" + } + }, + "ISO27001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27001" + } + }, + "ISO27001_2022": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27001_2022" + } + }, + "ISO27017": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27017" + } + }, + "ISO27018": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27018" + } + }, + "ISO27701": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27701" + } + }, + "ISO27701_2025": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso27701_2025" + } + }, + "ISO42001": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso42001" + } + }, + "MSFTSSPA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "msftSSPA" + } + }, + "MVSP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "mvsp" + } + }, + "NIS2D": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nis2d" + } + }, + "NIST53": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nist53" + } + }, + "NIST171": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nist171" + } + }, + "NIST171R3": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nist171r3" + } + }, + "NISTAIRMF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nistAiRmf" + } + }, + "NISTCSF": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nistCSF" + } + }, + "NISTCSF2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "nistcsf2" + } + }, + "OFDSS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ofdss" + } + }, + "PCIDSS4": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pciDss4" + } + }, + "PCISAQA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pciSaqA" + } + }, + "PCISAQAEP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pciSaqAEP" + } + }, + "PCISAQDMERCHANT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pciSaqDMerchant" + } + }, + "PCISAQDSP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "pciSaqDSP" + } + }, + "SOC2": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "soc2" + } + }, + "SOXITGC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "soxITGC" + } + }, + "T23NYCRR500": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "t23nycrr500" + } + }, + "TISAX": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "tisax" + } + }, + "TISAX2027": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "tisax2027" + } + }, + "ISO22301": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "iso22301" + } + }, + "TRUST": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "trust" + } + }, + "UKCYBERESSENTIALS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ukCyberEssentials" + } + }, + "UKCYBERESSENTIALS33": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ukCyberEssentials33" + } + }, + "USDATAPRIVACY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "usDataPrivacy" + } + }, + "FEDRAMPKSI": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "fedrampKSI" + } + } + }, + "traits": { + "smithy.api#documentation": "Compliance standard to associate with this framework. Pass null to unset." + } + }, + "com.vanta.manage_vanta#UpdateComplianceFrameworkRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "frameworkId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the framework." + } + }, + "standard": { + "target": "com.vanta.manage_vanta#UpdateComplianceFrameworkRequestStandard", + "traits": { + "smithy.api#documentation": "Compliance standard to associate with this framework. Pass null to unset.", + "com.distilled.openapi#nullable": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the framework. Pass null to unset.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateComplianceFramework": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateComplianceFrameworkRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterComplianceFramework" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/compliance-frameworks/{frameworkId}", + "code": 200 + }, + "smithy.api#documentation": "Update Trust Center compliance framework\n\nUpdates a compliance framework on a Trust Center." + } + }, + "com.vanta.manage_vanta#DeleteComplianceFrameworkRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "frameworkId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteComplianceFramework": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteComplianceFrameworkRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/compliance-frameworks/{frameworkId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center compliance framework\n\nRemoves a compliance framework from a Trust Center." + } + }, + "com.vanta.manage_vanta#UploadComplianceFrameworkBadgeRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "frameworkId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "file": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#BadgeUploadResponse": { + "type": "structure", + "members": { + "isSuccessful": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the upload succeeded.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UploadComplianceFrameworkBadge": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UploadComplianceFrameworkBadgeRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#BadgeUploadResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/compliance-frameworks/{frameworkId}/badge", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Upload Trust Center compliance framework badge\n\nUploads a badge image for a compliance framework on a Trust Center.", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#GetTrustCenterControlCategoriesRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterControlCategory": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterControlCategoryResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterControlCategory": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the control category.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the category.", + "smithy.api#required": {} + } + }, + "visibility": { + "target": "com.vanta.manage_vanta#TrustCenterControlVisibility", + "traits": { + "smithy.api#documentation": "Visibility of the category's controls on the Trust Center. `SHAREABLE`\ncategories are only visible to accounts with a matching access grant.", + "smithy.api#required": {} + } + }, + "statusVisibilityOverride": { + "target": "com.vanta.manage_vanta#TrustCenterControlVisibilityMode", + "traits": { + "smithy.api#documentation": "Per-category status-visibility override. `null` means the category\nfollows the Trust Center's global default.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterControlVisibility": { + "type": "enum", + "members": { + "PUBLIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PUBLIC" + } + }, + "SHAREABLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SHAREABLE" + } + } + }, + "traits": { + "smithy.api#documentation": "Visibility of a control category's controls on the Trust Center.\n`SHAREABLE` categories are only visible to accounts with a matching access\ngrant." + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterControlCategoryResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterControlCategory" + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetTrustCenterControlCategories": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterControlCategoriesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterControlCategory" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/control-categories", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center control categories\n\nGets a list of control categories on a Trust Center." + } + }, + "com.vanta.manage_vanta#AddTrustCenterControlCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the category.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#AddTrustCenterControlCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddTrustCenterControlCategoryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterControlCategory" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/control-categories", + "code": 200 + }, + "smithy.api#documentation": "Add Trust Center control category\n\nAdds a control category to a Trust Center." + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterControlCategoriesOrderRequestOrderedCategoryIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Ordered list of all control category IDs representing the desired order." + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterControlCategoriesOrderRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "orderedCategoryIds": { + "target": "com.vanta.manage_vanta#UpsertTrustCenterControlCategoriesOrderRequestOrderedCategoryIdsList", + "traits": { + "smithy.api#documentation": "Ordered list of all control category IDs representing the desired order.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterControlCategoriesOrder": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpsertTrustCenterControlCategoriesOrderRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterControlCategory" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/trust-centers/{slugId}/control-categories/order", + "code": 200 + }, + "smithy.api#documentation": "Reorder Trust Center control categories\n\nReorders control categories on a Trust Center. The request body must\ncontain the complete set of category IDs in the desired order." + } + }, + "com.vanta.manage_vanta#GetTrustCenterControlCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterControlCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterControlCategoryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterControlCategory" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/control-categories/{categoryId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center control category\n\nGets a specific control category on a Trust Center." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterControlCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "New name for the category. Omit to leave the name unchanged." + } + }, + "visibility": { + "target": "com.vanta.manage_vanta#TrustCenterControlVisibility", + "traits": { + "smithy.api#documentation": "Visibility of the category's controls on the Trust Center. Omit to\nleave unchanged." + } + }, + "statusVisibilityOverride": { + "target": "com.vanta.manage_vanta#TrustCenterControlVisibilityMode", + "traits": { + "smithy.api#documentation": "Per-category status-visibility override. Omit to leave unchanged; pass\n`null` to clear the override and fall back to the Trust Center's global\ndefault.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterControlCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterControlCategoryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterControlCategory" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/control-categories/{categoryId}", + "code": 200 + }, + "smithy.api#documentation": "Update Trust Center control category\n\nUpdates a control category on a Trust Center." + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterControlCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterControlCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTrustCenterControlCategoryRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/control-categories/{categoryId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center control category\n\nRemoves a control category from a Trust Center along with all of the\ncontrols in the category." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterControlsInCategoryRequestControlsToAddList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs of controls to add to the category." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterControlsInCategoryRequestControlsToRemoveList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs of controls to remove from the category." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterControlsInCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlsToAdd": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterControlsInCategoryRequestControlsToAddList", + "traits": { + "smithy.api#documentation": "IDs of controls to add to the category.", + "smithy.api#required": {} + } + }, + "controlsToRemove": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterControlsInCategoryRequestControlsToRemoveList", + "traits": { + "smithy.api#documentation": "IDs of controls to remove from the category.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterControlsInCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterControlsInCategoryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterControlCategory" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/control-categories/{categoryId}/controls", + "code": 200 + }, + "smithy.api#documentation": "Bulk edit controls in a category\n\nBulk add or remove controls from a control category on a Trust Center." + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterControlsInCategoryOrderRequestOrderedControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Ordered list of all control IDs in the category representing the desired order." + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterControlsInCategoryOrderRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "orderedControlIds": { + "target": "com.vanta.manage_vanta#UpsertTrustCenterControlsInCategoryOrderRequestOrderedControlIdsList", + "traits": { + "smithy.api#documentation": "Ordered list of all control IDs in the category representing the desired order.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterControlsInCategoryOrder": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpsertTrustCenterControlsInCategoryOrderRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterControlCategory" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/trust-centers/{slugId}/control-categories/{categoryId}/controls/order", + "code": 200 + }, + "smithy.api#documentation": "Reorder controls in a Trust Center control category\n\nReorders controls within a control category on a Trust Center. The\nrequest body must contain the complete set of control IDs in the\ncategory in the desired order." + } + }, + "com.vanta.manage_vanta#ListTrustCenterControlsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterControl": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterControlResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterControl": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the control.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The name of the control, usually a summary of the description.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The description of the control.", + "smithy.api#required": {} + } + }, + "categories": { + "target": "com.vanta.manage_vanta#TrustCenterControlCategoriesList", + "traits": { + "smithy.api#documentation": "The Trust Center control categories that the control belongs to.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterControlCategoriesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterControlCategory" + }, + "traits": { + "smithy.api#documentation": "The Trust Center control categories that the control belongs to." + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterControlResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterControl" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterControlResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterControlResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterControls": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterControlsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterControl" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/controls", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center controls\n\nGets a list of controls on a Trust Center." + } + }, + "com.vanta.manage_vanta#AddControlToTrustCenterRequestCategoryIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs of the categories to add the control to. This cannot be empty." + } + }, + "com.vanta.manage_vanta#AddControlToTrustCenterRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the control to add to the Trust Center.", + "smithy.api#required": {} + } + }, + "categoryIds": { + "target": "com.vanta.manage_vanta#AddControlToTrustCenterRequestCategoryIdsList", + "traits": { + "smithy.api#documentation": "IDs of the categories to add the control to. This cannot be empty.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#AddControlToTrustCenter": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddControlToTrustCenterRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterControl" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/controls", + "code": 200 + }, + "smithy.api#documentation": "Add Trust Center control\n\nAdds a control to a Trust Center." + } + }, + "com.vanta.manage_vanta#BulkAddTagsToControlsRequestControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs of the controls to tag. Maximum 100." + } + }, + "com.vanta.manage_vanta#BulkAddTagsToControlsRequestTagsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs of the tags to add or remove." + } + }, + "com.vanta.manage_vanta#BulkAddTagsToControlsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlIds": { + "target": "com.vanta.manage_vanta#BulkAddTagsToControlsRequestControlIdsList", + "traits": { + "smithy.api#documentation": "IDs of the controls to tag. Maximum 100.", + "smithy.api#required": {} + } + }, + "tagCategory": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the tag category.", + "smithy.api#required": {} + } + }, + "tags": { + "target": "com.vanta.manage_vanta#BulkAddTagsToControlsRequestTagsList", + "traits": { + "smithy.api#documentation": "IDs of the tags to add or remove.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterControl": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterControlResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterControlResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterControl" + }, + "traits": {} + }, + "com.vanta.manage_vanta#BulkAddTagsToControls": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#BulkAddTagsToControlsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterControl" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/controls/tags", + "code": 200 + }, + "smithy.api#documentation": "Bulk add tags to Trust Center controls\n\nAdds tags to multiple controls on a Trust Center. Limited to 100 controls per request." + } + }, + "com.vanta.manage_vanta#BulkRemoveTagsFromControlsRequestControlIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs of the controls to tag. Maximum 100." + } + }, + "com.vanta.manage_vanta#BulkRemoveTagsFromControlsRequestTagsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs of the tags to add or remove." + } + }, + "com.vanta.manage_vanta#BulkRemoveTagsFromControlsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlIds": { + "target": "com.vanta.manage_vanta#BulkRemoveTagsFromControlsRequestControlIdsList", + "traits": { + "smithy.api#documentation": "IDs of the controls to tag. Maximum 100.", + "smithy.api#required": {} + } + }, + "tagCategory": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the tag category.", + "smithy.api#required": {} + } + }, + "tags": { + "target": "com.vanta.manage_vanta#BulkRemoveTagsFromControlsRequestTagsList", + "traits": { + "smithy.api#documentation": "IDs of the tags to add or remove.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#BulkRemoveTagsFromControls": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#BulkRemoveTagsFromControlsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterControl" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/controls/tags", + "code": 200 + }, + "smithy.api#documentation": "Bulk remove tags from Trust Center controls\n\nRemoves tags from multiple controls on a Trust Center. Limited to 100 controls per request." + } + }, + "com.vanta.manage_vanta#GetTrustCenterControlRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterControlRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterControl" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/controls/{controlId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center control\n\nGets a specific control on a Trust Center." + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterControlRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "controlId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterControl": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTrustCenterControlRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/controls/{controlId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center control\n\nRemoves a specific control from a Trust Center. This removes the control\nfrom all of the control categories that is in." + } + }, + "com.vanta.manage_vanta#ListTrustCenterDataCollectedRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterDataCollected": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterDataCollectedResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterDataCollected": { + "type": "structure", + "members": { + "dataCollected": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the data type being disclosed.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#DataCollectedStatus", + "traits": { + "smithy.api#documentation": "Status of the data collection disclosure.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DataCollectedStatus": { + "type": "enum", + "members": { + "COLLECTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COLLECTED" + } + }, + "HIDDEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HIDDEN" + } + }, + "NOT_COLLECTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_COLLECTED" + } + } + }, + "traits": { + "smithy.api#documentation": "Enum representing if and how the data collected is shown on the trust center" + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterDataCollectedResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterDataCollected" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterDataCollected": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterDataCollectedRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterDataCollected" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/data-collected", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center data collected\n\nGets the list of data-collected disclosures on a Trust Center." + } + }, + "com.vanta.manage_vanta#DataCollectedInputItem": { + "type": "structure", + "members": { + "dataCollected": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the data type being disclosed.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#DataCollectedStatus", + "traits": { + "smithy.api#documentation": "Status of the data collection disclosure. Must be one of \"COLLECTED\", \"HIDDEN\", or \"NOT_COLLECTED\".", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UpsertTrustCenterDataCollectedRequestDataCollectedList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#DataCollectedInputItem" + }, + "traits": { + "smithy.api#documentation": "List of data-collected disclosures to set on the Trust Center." + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterDataCollectedRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "dataCollected": { + "target": "com.vanta.manage_vanta#UpsertTrustCenterDataCollectedRequestDataCollectedList", + "traits": { + "smithy.api#documentation": "List of data-collected disclosures to set on the Trust Center.", + "smithy.api#required": {} + } + }, + "dataCollectedHeading": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Custom heading for the data collected section. If null is passed in, unsets the current heading.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterDataCollected": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpsertTrustCenterDataCollectedRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterDataCollected" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/trust-centers/{slugId}/data-collected", + "code": 200 + }, + "smithy.api#documentation": "Set Trust Center data collected\n\nReplaces all data-collected disclosures on a Trust Center with the\nprovided list. This is a full replacement — any existing disclosures\nnot included in the request body will be removed. To add or remove a\nsingle entry, first GET the current list, modify it, then PUT the\nupdated list back." + } + }, + "com.vanta.manage_vanta#ListTrustCenterFaqCategoriesRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterFaqCategory": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterFaqCategoryResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterFaqCategory": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the FAQ category.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the category.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterFaqCategoryResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterFaqCategory" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterFaqCategories": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterFaqCategoriesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterFaqCategory" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/faq-categories", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center FAQ categories\n\nGets a list of FAQ categories on a Trust Center." + } + }, + "com.vanta.manage_vanta#AddTrustCenterFaqCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the category.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#AddTrustCenterFaqCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddTrustCenterFaqCategoryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterFaqCategory" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/faq-categories", + "code": 200 + }, + "smithy.api#documentation": "Add Trust Center FAQ category\n\nAdds an FAQ category to a Trust Center." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterFaqCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "New name for the category.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterFaqCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterFaqCategoryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterFaqCategory" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/faq-categories/{categoryId}", + "code": 200 + }, + "smithy.api#documentation": "Update Trust Center FAQ category\n\nUpdates an FAQ category on a Trust Center." + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterFaqCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterFaqCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTrustCenterFaqCategoryRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/faq-categories/{categoryId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center FAQ category\n\nRemoves an FAQ category from a Trust Center. FAQs in the\ndeleted category are moved to uncategorized." + } + }, + "com.vanta.manage_vanta#ListTrustCenterFaqsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterFaq": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterFaqResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterFaq": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the Trust Center FAQ.", + "smithy.api#required": {} + } + }, + "question": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The FAQ question.", + "smithy.api#required": {} + } + }, + "answer": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The FAQ answer.", + "smithy.api#required": {} + } + }, + "category": { + "target": "com.vanta.manage_vanta#TrustCenterFaqCategory", + "traits": { + "smithy.api#documentation": "The category this FAQ belongs to, or null if uncategorized.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterFaqResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterFaq" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterFaqs": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterFaqsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterFaq" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/faqs", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center FAQs\n\nGets a list of FAQs on a Trust Center." + } + }, + "com.vanta.manage_vanta#CreateTrustCenterFaqRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "question": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The FAQ question.", + "smithy.api#required": {} + } + }, + "answer": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The FAQ answer.", + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The category to place this FAQ in. Pass null to move to uncategorized. Omit to leave unchanged (on update) or default to uncategorized (on create).", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateTrustCenterFaq": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateTrustCenterFaqRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterFaq" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/faqs", + "code": 200 + }, + "smithy.api#documentation": "Create Trust Center FAQ\n\nAdds an FAQ to a Trust Center." + } + }, + "com.vanta.manage_vanta#GetTrustCenterFaqRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "faqId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterFaq": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterFaqRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterFaq" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/faqs/{faqId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center FAQ\n\nGets a specific FAQ on the Trust Center by ID." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterFaqRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "faqId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "question": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The FAQ question.", + "smithy.api#required": {} + } + }, + "answer": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The FAQ answer.", + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The category to place this FAQ in. Pass null to move to uncategorized. Omit to leave unchanged (on update) or default to uncategorized (on create).", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterFaq": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterFaqRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterFaq" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/faqs/{faqId}", + "code": 200 + }, + "smithy.api#documentation": "Update Trust Center FAQ\n\nUpdate a specific FAQ on the Trust Center by ID." + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterFaqRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "faqId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterFaq": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTrustCenterFaqRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/faqs/{faqId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center FAQ\n\nRemove a specific FAQ from the Trust Center by ID." + } + }, + "com.vanta.manage_vanta#UploadTrustCenterFaviconRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "favicon": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UploadFaviconResponse": { + "type": "structure", + "members": { + "isSuccessful": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the favicon was successfully uploaded.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Response returned after a favicon upload." + } + }, + "com.vanta.manage_vanta#UploadTrustCenterFavicon": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UploadTrustCenterFaviconRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#UploadFaviconResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/favicon", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Upload Trust Center favicon\n\nUploads a favicon for a Trust Center. The Trust Center must have a custom\ndomain configured.", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#ListTrustCenterHistoricalAccessRequestsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequestHistorical": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequestHistoricalResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterAccessRequestHistorical": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the access request.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the requester.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the requester.", + "smithy.api#required": {} + } + }, + "companyName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the requester's company.", + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Reason for the access request.", + "smithy.api#required": {} + } + }, + "requestedResources": { + "target": "com.vanta.manage_vanta#TrustCenterAccessRequestHistoricalRequestedResourcesList", + "traits": { + "smithy.api#documentation": "IDs for the resources that the viewer requested access to.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "accessLevel": { + "target": "com.vanta.manage_vanta#ViewerAccessLevel", + "traits": { + "smithy.api#documentation": "Access level that the viewer requested.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the access request was created.", + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the access request was last updated.", + "smithy.api#required": {} + } + }, + "outcome": { + "target": "com.vanta.manage_vanta#HistoricalAccessRequestOutcome", + "traits": { + "smithy.api#documentation": "Outcome of the access request. APPROVED or DENIED.", + "smithy.api#required": {} + } + }, + "manualDenialReason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Reason provided when the access request was denied. Null if not denied or no reason was given.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterAccessRequestHistoricalRequestedResourcesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs for the resources that the viewer requested access to." + } + }, + "com.vanta.manage_vanta#HistoricalAccessRequestOutcome": { + "type": "enum", + "members": { + "APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPROVED" + } + }, + "DENIED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DENIED" + } + } + }, + "traits": { + "smithy.api#documentation": "Enum representing the outcome states of a historical trust center access request" + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequestHistoricalResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterAccessRequestHistorical" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequestHistoricalResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequestHistoricalResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterHistoricalAccessRequests": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterHistoricalAccessRequestsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterAccessRequestHistorical" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/historical-access-requests", + "code": 200 + }, + "smithy.api#documentation": "List historical Trust Center access requests\n\nGets a list of historical (approved or denied) access requests for a Trust Center." + } + }, + "com.vanta.manage_vanta#ListTrustCenterResourceCategoriesRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterResourceCategory": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterResourceCategoryResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterResourceCategory": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the resource category.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the category.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterResourceCategoryResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterResourceCategory" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterResourceCategories": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterResourceCategoriesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterResourceCategory" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/resource-categories", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center resource categories\n\nGets a list of resource categories on a Trust Center." + } + }, + "com.vanta.manage_vanta#AddTrustCenterResourceCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the category.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#AddTrustCenterResourceCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddTrustCenterResourceCategoryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterResourceCategory" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/resource-categories", + "code": 200 + }, + "smithy.api#documentation": "Add Trust Center resource category\n\nAdds a resource category to a Trust Center." + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterResourceCategoriesOrderRequestCategoryIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Ordered list of all resource category IDs representing the desired order." + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterResourceCategoriesOrderRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "categoryIds": { + "target": "com.vanta.manage_vanta#UpsertTrustCenterResourceCategoriesOrderRequestCategoryIdsList", + "traits": { + "smithy.api#documentation": "Ordered list of all resource category IDs representing the desired order.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterResourceCategoriesOrder": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpsertTrustCenterResourceCategoriesOrderRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterResourceCategory" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/trust-centers/{slugId}/resource-categories/order", + "code": 200 + }, + "smithy.api#documentation": "Reorder Trust Center resource categories\n\nReorders resource categories on a Trust Center. The request body must\ncontain the complete set of category IDs in the desired order." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterResourceCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "New name for the category.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterResourceCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterResourceCategoryRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterResourceCategory" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/resource-categories/{categoryId}", + "code": 200 + }, + "smithy.api#documentation": "Update Trust Center resource category\n\nUpdates a resource category on a Trust Center." + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterResourceCategoryRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "categoryId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterResourceCategory": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTrustCenterResourceCategoryRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/resource-categories/{categoryId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center resource category\n\nRemoves a resource category from a Trust Center. Resources in the\ndeleted category are moved to uncategorized." + } + }, + "com.vanta.manage_vanta#ListTrustCenterResourcesRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterResource": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterResourceResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterResource": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the document.", + "smithy.api#required": {} + } + }, + "fileName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The file name of the document.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's title.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's description", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "mimeType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Mime type of the document.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date of when the document was uploaded.", + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the document was last updated.", + "smithy.api#required": {} + } + }, + "isPublic": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Boolean determining whether the document is publicly available.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterResourceResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterResource" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterResources": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterResourcesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterResource" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/resources", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center resources\n\nGets a list of resources on a Trust Center." + } + }, + "com.vanta.manage_vanta#CreateTrustCenterResourceRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "file": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title of the Trust Center document.", + "smithy.api#required": {} + } + }, + "isPublic": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Boolean determining whether the document is publicly available.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the uploaded document." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateTrustCenterResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateTrustCenterResourceRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterResource" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/resources", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Create Trust Center document\n\nAdds a document to a Trust Center.", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#GetTrustCenterResourceRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterResourceRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterResource" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/resources/{resourceId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center document\n\nGets a specific document on a Trust Center." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterResourceRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title of the Trust Center document." + } + }, + "isPublic": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Boolean determining whether the document is publicly available." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the uploaded document." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterResourceRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterResource" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/resources/{resourceId}", + "code": 200 + }, + "smithy.api#documentation": "Update Trust Center document\n\nUpdates a specific document on a Trust Center." + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterResourceRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterResource": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTrustCenterResourceRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/resources/{resourceId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center document\n\nRemoves a specific document from a Trust Center." + } + }, + "com.vanta.manage_vanta#GetTrustCenterResourceMediaRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterResourceMedia": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterResourceMediaRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#NodeJSReadableStream" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/resources/{resourceId}/media", + "code": 200 + }, + "smithy.api#documentation": "Get uploaded media for Trust Center document\n\nGets the actual given uploaded document for a Trust Center." + } + }, + "com.vanta.manage_vanta#ListTrustCenterSubprocessorsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterSubprocessor": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterSubprocessorResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterSubprocessor": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the subprocessor.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the subprocessor.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the subprocessor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "location": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Where this subprocessor is deployed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "purpose": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The purpose that the subprocessor serves.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "URL of the subprocessor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterSubprocessorResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterSubprocessor" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterSubprocessors": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterSubprocessorsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterSubprocessor" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/subprocessors", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center subprocessors\n\nGets the list of subprocessors on a Trust Center." + } + }, + "com.vanta.manage_vanta#CreateTrustCenterSubprocessorRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the subprocessor.", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "URL of the subprocessor." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the subprocessor." + } + }, + "location": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Where this subprocessor is deployed." + } + }, + "purpose": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The purpose that the subprocessor serves." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateTrustCenterSubprocessorResponse": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the subprocessor.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the subprocessor.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the subprocessor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "location": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Where this subprocessor is deployed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "purpose": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The purpose that the subprocessor serves.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "URL of the subprocessor.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.vanta.manage_vanta#CreateTrustCenterSubprocessor": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateTrustCenterSubprocessorRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#CreateTrustCenterSubprocessorResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/subprocessors", + "code": 200 + }, + "smithy.api#documentation": "Create Trust Center subprocessor\n\nAdds a subprocessor to a Trust Center." + } + }, + "com.vanta.manage_vanta#GetTrustCenterSubprocessorRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "subprocessorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterSubprocessor": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterSubprocessorRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterSubprocessor" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/subprocessors/{subprocessorId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center subprocessor\n\nGets a specific subprocessor on a Trust Center." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterSubprocessorRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "subprocessorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "What to set the subprocessor description to. If null is passed in, the\nsubprocessor's current description is unset.", + "com.distilled.openapi#nullable": {} + } + }, + "location": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "What to set the subprocessor location to. If null is passed in, the\nsubprocessor's current description is unset.", + "com.distilled.openapi#nullable": {} + } + }, + "purpose": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "What to set the subprocessor purpose to. If null is passed in, the\nsubprocessor's current description is unset.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterSubprocessor": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterSubprocessorRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterSubprocessor" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/subprocessors/{subprocessorId}", + "code": 200 + }, + "smithy.api#documentation": "Update Trust Center subprocessor\n\nUpdates a subprocessor on a Trust Center." + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterSubprocessorRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "subprocessorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterSubprocessor": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTrustCenterSubprocessorRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/subprocessors/{subprocessorId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center subprocessor\n\nRemoves a subprocessor from a Trust Center." + } + }, + "com.vanta.manage_vanta#ListTrustCenterSubscriberGroupsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriberGroup": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriberGroupResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterSubscriberGroup": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the subscriber group.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the subscriber group.", + "smithy.api#required": {} + } + }, + "subscriberIds": { + "target": "com.vanta.manage_vanta#TrustCenterSubscriberGroupSubscriberIdsList", + "traits": { + "smithy.api#documentation": "List of subscriber IDs in the group.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the subscriber group was created.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterSubscriberGroupSubscriberIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "List of subscriber IDs in the group." + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriberGroupResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterSubscriberGroup" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriberGroupResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriberGroupResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterSubscriberGroups": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterSubscriberGroupsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriberGroup" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/subscriber-groups", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center subscriber groups\n\nGets a list of subscriber groups on a Trust Center." + } + }, + "com.vanta.manage_vanta#CreateTrustCenterSubscriberGroupRequestSubscriberIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "List of subscriber IDs in the group." + } + }, + "com.vanta.manage_vanta#CreateTrustCenterSubscriberGroupRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the subscriber group.", + "smithy.api#required": {} + } + }, + "subscriberIds": { + "target": "com.vanta.manage_vanta#CreateTrustCenterSubscriberGroupRequestSubscriberIdsList", + "traits": { + "smithy.api#documentation": "List of subscriber IDs in the group.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateTrustCenterSubscriberGroup": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateTrustCenterSubscriberGroupRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterSubscriberGroup" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/subscriber-groups", + "code": 200 + }, + "smithy.api#documentation": "Create Trust Center subscriber group\n\nAdds a subscriber group to a Trust Center." + } + }, + "com.vanta.manage_vanta#GetTrustCenterSubscriberGroupRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "subscriberGroupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterSubscriberGroup": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterSubscriberGroupRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterSubscriberGroup" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/subscriber-groups/{subscriberGroupId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center subscriber group\n\nGet a subscriber group by ID." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterSubscriberGroupRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "subscriberGroupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Updated name of the subscriber group.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterSubscriberGroup": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterSubscriberGroupRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterSubscriberGroup" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/subscriber-groups/{subscriberGroupId}", + "code": 200 + }, + "smithy.api#documentation": "Edit Trust Center subscriber group\n\nEdits a Trust Center subscriber group." + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterSubscriberGroupRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "subscriberGroupId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterSubscriberGroup": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTrustCenterSubscriberGroupRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/subscriber-groups/{subscriberGroupId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center subscriber group\n\nRemoves a subscriber group from a Trust Center." + } + }, + "com.vanta.manage_vanta#ListTrustCenterSubscribersRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "customerTrustAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "customerTrustAccountId" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriber": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriberResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterSubscriber": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the subscriber.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the subscriber.", + "smithy.api#required": {} + } + }, + "isEmailVerified": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the subscriber's email has been verified.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the subscriber was created.", + "smithy.api#required": {} + } + }, + "customerTrustAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The ID of the customer trust account this subscriber is linked to, if any.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "groups": { + "target": "com.vanta.manage_vanta#TrustCenterSubscriberGroupsList", + "traits": { + "smithy.api#documentation": "Groups this subscriber belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#SubscriberGroup": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the group.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the group.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterSubscriberGroupsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#SubscriberGroup" + }, + "traits": { + "smithy.api#documentation": "Groups this subscriber belongs to." + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriberResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterSubscriber" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriberResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriberResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterSubscribers": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterSubscribersRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterSubscriber" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/subscribers", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center subscribers\n\nGets a list of subscribers on a Trust Center." + } + }, + "com.vanta.manage_vanta#CreateTrustCenterSubscriberRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the subscriber.", + "smithy.api#required": {} + } + }, + "customerTrustAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional: Link subscriber to a customer trust account by ID." + } + }, + "shouldSkipEmailVerification": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "When true, the subscriber is created as already verified and no\nverification email is sent. Defaults to false." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateTrustCenterSubscriber": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateTrustCenterSubscriberRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterSubscriber" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/subscribers", + "code": 200 + }, + "smithy.api#documentation": "Create Trust Center subscriber\n\nAdds a subscriber to a Trust Center." + } + }, + "com.vanta.manage_vanta#GetTrustCenterSubscriberRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "subscriberId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterSubscriber": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterSubscriberRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterSubscriber" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/subscribers/{subscriberId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center subscriber\n\nGets a specific subscriber on a Trust Center." + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterSubscriberRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "subscriberId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterSubscriber": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTrustCenterSubscriberRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/subscribers/{subscriberId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center subscriber\n\nRemoves a subscriber from a Trust Center." + } + }, + "com.vanta.manage_vanta#UpsertGroupsForTrustCenterSubscriberRequestGroupIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Group IDs to set for the subscriber. The subscriber will be removed from\nany groups not included in this list." + } + }, + "com.vanta.manage_vanta#UpsertGroupsForTrustCenterSubscriberRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "subscriberId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "groupIds": { + "target": "com.vanta.manage_vanta#UpsertGroupsForTrustCenterSubscriberRequestGroupIdsList", + "traits": { + "smithy.api#documentation": "Group IDs to set for the subscriber. The subscriber will be removed from\nany groups not included in this list.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpsertGroupsForTrustCenterSubscriber": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpsertGroupsForTrustCenterSubscriberRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterSubscriber" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/trust-centers/{slugId}/subscribers/{subscriberId}/groups", + "code": 200 + }, + "smithy.api#documentation": "Set groups for a Trust Center subscriber\n\nSets groups on a subscriber." + } + }, + "com.vanta.manage_vanta#ListTrustCenterUpdatesRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterUpdateAPIResponse": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterUpdateAPIResponseResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterUpdateAPIResponse": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the update.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title of the update.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the update.", + "smithy.api#required": {} + } + }, + "category": { + "target": "com.vanta.manage_vanta#UpdateCategory", + "traits": { + "smithy.api#documentation": "Category of the update.", + "smithy.api#required": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the update was created.", + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the viewer was last updated.", + "smithy.api#required": {} + } + }, + "visibilityType": { + "target": "com.vanta.manage_vanta#UpdateVisibilityType", + "traits": { + "smithy.api#documentation": "Visibility type of the update.", + "smithy.api#required": {} + } + }, + "notifiedEmails": { + "target": "com.vanta.manage_vanta#TrustCenterUpdateAPIResponseNotifiedEmailsList", + "traits": { + "smithy.api#documentation": "Emails to notify about the update." + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UpdateCategory": { + "type": "enum", + "members": { + "GENERAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GENERAL" + } + }, + "COMPLIANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLIANCE" + } + }, + "SECURITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SECURITY" + } + }, + "PRIVACY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRIVACY" + } + }, + "INCIDENT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INCIDENT" + } + }, + "ROADMAP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ROADMAP" + } + } + }, + "traits": { + "smithy.api#documentation": "The possible categories for a Trust Center update." + } + }, + "com.vanta.manage_vanta#UpdateVisibilityType": { + "type": "enum", + "members": { + "PUBLIC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PUBLIC" + } + }, + "PRIVATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PRIVATE" + } + } + }, + "traits": { + "smithy.api#documentation": "Visibility of a Trust Center update." + } + }, + "com.vanta.manage_vanta#TrustCenterUpdateAPIResponseNotifiedEmailsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Emails to notify about the update." + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterUpdateAPIResponseResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterUpdateAPIResponse" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterUpdateAPIResponseResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterUpdateAPIResponseResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterUpdates": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterUpdatesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterUpdateAPIResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/updates", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center updates\n\nGets a list of updates on a Trust Center." + } + }, + "com.vanta.manage_vanta#CreateTrustCenterUpdateRequestNotifiedEmailsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Additional one-off email addresses to notify. These are always sent regardless of `notificationTarget`." + } + }, + "com.vanta.manage_vanta#UpdateNotificationTarget": { + "type": "enum", + "members": { + "ALL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ALL" + } + }, + "GROUPS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GROUPS" + } + }, + "NONE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NONE" + } + } + }, + "traits": { + "smithy.api#documentation": "Target recipients for notifications" + } + }, + "com.vanta.manage_vanta#CreateTrustCenterUpdateRequestSubscriberGroupIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs of subscriber groups to notify. Required when `notificationTarget` is `GROUPS`." + } + }, + "com.vanta.manage_vanta#CreateTrustCenterUpdateRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title of the update.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the update.", + "smithy.api#required": {} + } + }, + "category": { + "target": "com.vanta.manage_vanta#UpdateCategory", + "traits": { + "smithy.api#documentation": "Category of the update.", + "smithy.api#required": {} + } + }, + "visibilityType": { + "target": "com.vanta.manage_vanta#UpdateVisibilityType", + "traits": { + "smithy.api#documentation": "Visibility type of the update." + } + }, + "notifiedEmails": { + "target": "com.vanta.manage_vanta#CreateTrustCenterUpdateRequestNotifiedEmailsList", + "traits": { + "smithy.api#documentation": "Additional one-off email addresses to notify. These are always sent regardless of `notificationTarget`." + } + }, + "notificationTarget": { + "target": "com.vanta.manage_vanta#UpdateNotificationTarget", + "traits": { + "smithy.api#documentation": "Controls which Trust Center subscribers are notified.\n- `ALL`: notifies all active subscribers\n- `GROUPS`: notifies only subscribers in the specified `subscriberGroupIds`\n- `NONE`: no subscribers are notified\n\nNote: `notifiedEmails` are always sent regardless of this value." + } + }, + "subscriberGroupIds": { + "target": "com.vanta.manage_vanta#CreateTrustCenterUpdateRequestSubscriberGroupIdsList", + "traits": { + "smithy.api#documentation": "IDs of subscriber groups to notify. Required when `notificationTarget` is `GROUPS`." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateTrustCenterUpdate": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateTrustCenterUpdateRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterUpdateAPIResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/updates", + "code": 200 + }, + "smithy.api#documentation": "Create Trust Center update\n\nAdds an update to a Trust Center." + } + }, + "com.vanta.manage_vanta#GetTrustCenterUpdateRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "updateId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterUpdate": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterUpdateRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterUpdateAPIResponse" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/updates/{updateId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center update\n\nGets a specific update on a Trust Center." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterUpdateRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "updateId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title of the update.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the update.", + "smithy.api#required": {} + } + }, + "category": { + "target": "com.vanta.manage_vanta#UpdateCategory", + "traits": { + "smithy.api#documentation": "Category of the update.", + "smithy.api#required": {} + } + }, + "visibilityType": { + "target": "com.vanta.manage_vanta#UpdateVisibilityType", + "traits": { + "smithy.api#documentation": "Visibility type of the update." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterUpdate": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterUpdateRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterUpdateAPIResponse" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/updates/{updateId}", + "code": 200 + }, + "smithy.api#documentation": "Update Trust Center update\n\nUpdates an update on a Trust Center." + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterUpdateRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "updateId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteTrustCenterUpdate": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteTrustCenterUpdateRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/updates/{updateId}", + "code": 200 + }, + "smithy.api#documentation": "Delete Trust Center update\n\nRemoves an update from a Trust Center." + } + }, + "com.vanta.manage_vanta#SendNotificationsToAllSubscribersRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "updateId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#SendNotificationsToAllSubscribers": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#SendNotificationsToAllSubscribersRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/updates/{updateId}/notify-all-subscribers", + "code": 200 + }, + "smithy.api#documentation": "Send Trust Center update notifications to all subscribers\n\nSends notifications for a specific Trust Center update to all subscribers." + } + }, + "com.vanta.manage_vanta#SendTrustCenterUpdateNotificationsRequestEmailsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Additional email addresses to notify about this Trust Center update in addition to the existing Trust Center subscribers.\nDuplicate emails are deduplicated to ensure each recipient gets only one notification." + } + }, + "com.vanta.manage_vanta#SendTrustCenterUpdateNotificationsRequestSubscriberGroupIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs of subscriber groups to notify. When `customerTrustAccounts` is also provided,\nonly subscribers in these groups whose linked account matches are notified." + } + }, + "com.vanta.manage_vanta#CustomerTrustAccountsInput": { + "type": "structure", + "members": { + "customFieldsFilter": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountsInputCustomFieldsFilterList", + "traits": { + "smithy.api#documentation": "Filter accounts by custom field label/value pairs.\nWhen `value` is an array, accounts matching any of the values are included.\nWhen multiple entries are provided, accounts must satisfy all of them." + } + }, + "tagsByCategory": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountsInputTagsByCategoryList", + "traits": { + "smithy.api#documentation": "Narrow the candidate accounts resolved from `customFieldsFilter`\nto those with matching tags.\nWithin a category entry, accounts matching any of the `tagIds` are included.\nWhen multiple entries are provided, accounts must satisfy all of them." + } + } + }, + "traits": { + "smithy.api#documentation": "Account selectors for narrowing `GROUPS` notifications to subscribers with a matching linked account." + } + }, + "com.vanta.manage_vanta#CustomerTrustAccountCustomFieldFilter": { + "type": "structure", + "members": { + "label": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The custom field label.", + "smithy.api#required": {} + } + }, + "value": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountCustomFieldFilterValue", + "traits": { + "smithy.api#documentation": "The value(s) to match against. Provide an array to match any of multiple values.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "A single custom field filter condition." + } + }, + "com.vanta.manage_vanta#CustomerTrustAccountCustomFieldFilterValueCase1List": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#CustomerTrustAccountCustomFieldFilterValue": { + "type": "union", + "members": { + "Case0": { + "target": "smithy.api#String" + }, + "Case1": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountCustomFieldFilterValueCase1List" + } + }, + "traits": { + "smithy.api#documentation": "The value(s) to match against. Provide an array to match any of multiple values." + } + }, + "com.vanta.manage_vanta#CustomerTrustAccountsInputCustomFieldsFilterList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountCustomFieldFilter" + }, + "traits": { + "smithy.api#documentation": "Filter accounts by custom field label/value pairs.\nWhen `value` is an array, accounts matching any of the values are included.\nWhen multiple entries are provided, accounts must satisfy all of them." + } + }, + "com.vanta.manage_vanta#CustomerTrustAccountsInputTagsByCategoryList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TagsByCategoryInput" + }, + "traits": { + "smithy.api#documentation": "Narrow the candidate accounts resolved from `customFieldsFilter`\nto those with matching tags.\nWithin a category entry, accounts matching any of the `tagIds` are included.\nWhen multiple entries are provided, accounts must satisfy all of them." + } + }, + "com.vanta.manage_vanta#SendTrustCenterUpdateNotificationsRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "updateId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "emails": { + "target": "com.vanta.manage_vanta#SendTrustCenterUpdateNotificationsRequestEmailsList", + "traits": { + "smithy.api#documentation": "Additional email addresses to notify about this Trust Center update in addition to the existing Trust Center subscribers.\nDuplicate emails are deduplicated to ensure each recipient gets only one notification.", + "smithy.api#required": {} + } + }, + "subscriberGroupIds": { + "target": "com.vanta.manage_vanta#SendTrustCenterUpdateNotificationsRequestSubscriberGroupIdsList", + "traits": { + "smithy.api#documentation": "IDs of subscriber groups to notify. When `customerTrustAccounts` is also provided,\nonly subscribers in these groups whose linked account matches are notified.", + "smithy.api#required": {} + } + }, + "customerTrustAccounts": { + "target": "com.vanta.manage_vanta#CustomerTrustAccountsInput", + "traits": { + "smithy.api#documentation": "Optional account filters. When provided, only subscribers in `subscriberGroupIds`\nwhose linked account matches all specified filters are notified." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#NotifySpecificSubscribersResponse": { + "type": "structure", + "members": { + "recipientCount": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "The number of subscribers who will receive this notification.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#SendTrustCenterUpdateNotifications": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#SendTrustCenterUpdateNotificationsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#NotifySpecificSubscribersResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/updates/{updateId}/notify-specific-subscribers", + "code": 200 + }, + "smithy.api#documentation": "Send Trust Center update notifications to specific subscribers\n\nSends notifications for a specific Trust Center update to specific subscribers.\nAt least one subscriber group or email address is required.\n\nThe total number of resolved, deduplicated recipient emails must not exceed 5,000.\nIf exceeded, a 422 error is returned. Narrow your filters or split across multiple requests." + } + }, + "com.vanta.manage_vanta#SetTrustCenterVideoItem": { + "type": "structure", + "members": { + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Full video URL (e.g. \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\" or \"https://vimeo.com/123456\"). Supported platforms: YouTube, Vimeo.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title of the video.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the video." + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#UpsertTrustCenterVideosRequestVideosList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#SetTrustCenterVideoItem" + }, + "traits": { + "smithy.api#documentation": "The videos to display on the Trust Center. Replaces all existing videos." + } + }, + "com.vanta.manage_vanta#UpsertTrustCenterVideosRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "videos": { + "target": "com.vanta.manage_vanta#UpsertTrustCenterVideosRequestVideosList", + "traits": { + "smithy.api#documentation": "The videos to display on the Trust Center. Replaces all existing videos.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterVideo": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterVideoResultsList", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterVideo": { + "type": "structure", + "members": { + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Canonical URL for the video.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Title of the video.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the video.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ArrayResponseTrustCenterVideoResultsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterVideo" + }, + "traits": {} + }, + "com.vanta.manage_vanta#UpsertTrustCenterVideos": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpsertTrustCenterVideosRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#ArrayResponseTrustCenterVideo" + }, + "traits": { + "smithy.api#http": { + "method": "PUT", + "uri": "/trust-centers/{slugId}/videos", + "code": 200 + }, + "smithy.api#documentation": "Set Trust Center videos\n\nConfigures the videos displayed on a Trust Center. Replaces all\nexisting videos with the provided list." + } + }, + "com.vanta.manage_vanta#ListTrustCenterViewersRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "includeRemoved": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "includeRemoved" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterViewer": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterViewerResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterViewer": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the viewer.", + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the viewer.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the viewer.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "companyName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the viewer's company.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "resourceIds": { + "target": "com.vanta.manage_vanta#TrustCenterViewerResourceIdsList", + "traits": { + "smithy.api#documentation": "IDs for the resources this viewer has access to. If null, the\nviewer has access to all resources on the Trust Center.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "accessLevel": { + "target": "com.vanta.manage_vanta#ViewerAccessLevel", + "traits": { + "smithy.api#documentation": "Access level of the viewer.", + "smithy.api#required": {} + } + }, + "ndaInfo": { + "target": "com.vanta.manage_vanta#TrustCenterViewerNdaInfo", + "traits": { + "smithy.api#documentation": "NDA-related information for the viewer.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "externalServiceAssociations": { + "target": "com.vanta.manage_vanta#TrustCenterViewerExternalServiceAssociationsList", + "traits": { + "smithy.api#documentation": "Objects in external services that the viewer is associated with.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the viewer was created.", + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date the viewer was last updated.", + "smithy.api#required": {} + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Expiration date for the viewer's access.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "addedByUser": { + "target": "com.vanta.manage_vanta#CustomerTrustUser", + "traits": { + "smithy.api#documentation": "User that shared the Trust Center with this viewer.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "customerTrustAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the Customer Trust Account associated with this viewer.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterViewerResourceIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IDs for the resources this viewer has access to. If null, the\nviewer has access to all resources on the Trust Center." + } + }, + "com.vanta.manage_vanta#TrustCenterViewerNdaInfoDocuSign": { + "type": "structure", + "members": { + "envelopeId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the created envelope in DocuSign.", + "smithy.api#required": {} + } + }, + "accountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the DocuSign account.", + "smithy.api#required": {} + } + }, + "accountBaseUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "eSignature API URL for the DocuSign account.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Contains information about the DocuSign NDA if that is the NDA\nprovider." + } + }, + "com.vanta.manage_vanta#TrustCenterViewerNdaInfoOneClick": { + "type": "structure", + "members": { + "ndaUploadedDocumentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID for the NDA document that was signed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the person who signed the NDA.", + "smithy.api#required": {} + } + }, + "date": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the NDA document was signed.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Contains information about the click-wrap NDA if that is the NDA\nprovider." + } + }, + "com.vanta.manage_vanta#ViewerNdaProvider": { + "type": "enum", + "members": { + "DOCUSIGN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DOCUSIGN" + } + }, + "ONE_CLICK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ONE_CLICK" + } + }, + "SFDC_BYPASS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SFDC_BYPASS" + } + }, + "HUBSPOT_BYPASS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HUBSPOT_BYPASS" + } + }, + "IRONCLAD_BYPASS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IRONCLAD_BYPASS" + } + } + }, + "traits": { + "smithy.api#documentation": "The provider for a viewer's NDA. This can also be a provider that bypassed\nthe NDA requirement, e.g. SFDC." + } + }, + "com.vanta.manage_vanta#TrustCenterViewerNdaInfo": { + "type": "structure", + "members": { + "docuSign": { + "target": "com.vanta.manage_vanta#TrustCenterViewerNdaInfoDocuSign", + "traits": { + "smithy.api#documentation": "Contains information about the DocuSign NDA if that is the NDA\nprovider.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "oneClick": { + "target": "com.vanta.manage_vanta#TrustCenterViewerNdaInfoOneClick", + "traits": { + "smithy.api#documentation": "Contains information about the click-wrap NDA if that is the NDA\nprovider.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "provider": { + "target": "com.vanta.manage_vanta#ViewerNdaProvider", + "traits": { + "smithy.api#documentation": "The provider for the viewer's NDA.", + "smithy.api#required": {} + } + }, + "satisfiedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date the NDA was satisfied.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "NDA-related information for the viewer." + } + }, + "com.vanta.manage_vanta#ExternalService": { + "type": "enum", + "members": { + "SALESFORCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SALESFORCE" + } + }, + "HUBSPOT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HUBSPOT" + } + }, + "IRONCLAD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IRONCLAD" + } + } + }, + "traits": { + "smithy.api#documentation": "An external service that a Trust Center viewer may be associated with." + } + }, + "com.vanta.manage_vanta#TrustCenterViewerExternalServiceAssociationsItem": { + "type": "structure", + "members": { + "objectType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The type of object in the external service the viewer was linked to.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The ID of the user in the external service.", + "smithy.api#required": {} + } + }, + "service": { + "target": "com.vanta.manage_vanta#ExternalService", + "traits": { + "smithy.api#documentation": "The external service for the associated user.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#TrustCenterViewerExternalServiceAssociationsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterViewerExternalServiceAssociationsItem" + }, + "traits": { + "smithy.api#documentation": "Objects in external services that the viewer is associated with." + } + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterViewerResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#TrustCenterViewer" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseTrustCenterViewerResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterViewerResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListTrustCenterViewers": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListTrustCenterViewersRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseTrustCenterViewer" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/viewers", + "code": 200 + }, + "smithy.api#documentation": "List Trust Center viewers\n\nGets a list of viewers that have been granted access to a Trust Center." + } + }, + "com.vanta.manage_vanta#AddTrustCenterViewerRequestResourceIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Identifiers for the resources that this viewer should have access to. If\nthis field is omitted, the viewer will have access to all resources on the\nTrust Center." + } + }, + "com.vanta.manage_vanta#AddTrustCenterViewerRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the viewer.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the viewer.", + "smithy.api#required": {} + } + }, + "companyName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the viewer's company.", + "smithy.api#required": {} + } + }, + "isNdaRequired": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether to require an NDA for the viewer.", + "smithy.api#required": {} + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date access should expire for this viewer. If a date isn't provided,\naccess will not expire." + } + }, + "resourceIds": { + "target": "com.vanta.manage_vanta#AddTrustCenterViewerRequestResourceIdsList", + "traits": { + "smithy.api#documentation": "Identifiers for the resources that this viewer should have access to. If\nthis field is omitted, the viewer will have access to all resources on the\nTrust Center." + } + }, + "accessLevel": { + "target": "com.vanta.manage_vanta#ViewerAccessLevel", + "traits": { + "smithy.api#documentation": "Access level for the viewer.", + "smithy.api#required": {} + } + }, + "customerTrustAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of a Customer Trust Account to associate with this viewer." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#AddTrustCenterViewer": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AddTrustCenterViewerRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterViewer" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/viewers", + "code": 200 + }, + "smithy.api#documentation": "Add Trust Center viewer\n\nAdds a viewer and grants them access to a Trust Center." + } + }, + "com.vanta.manage_vanta#GetTrustCenterViewerRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "viewerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetTrustCenterViewer": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetTrustCenterViewerRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterViewer" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/trust-centers/{slugId}/viewers/{viewerId}", + "code": 200 + }, + "smithy.api#documentation": "Get Trust Center viewer\n\nGets a specific viewer for a Trust Center." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterViewerRequestResourceIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Identifiers for the resources that this viewer should have access to." + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterViewerRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "viewerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "accessLevel": { + "target": "com.vanta.manage_vanta#ViewerAccessLevel", + "traits": { + "smithy.api#documentation": "Access level for the viewer." + } + }, + "resourceIds": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterViewerRequestResourceIdsList", + "traits": { + "smithy.api#documentation": "Identifiers for the resources that this viewer should have access to." + } + }, + "expirationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The date access should expire for this viewer. Set to null to remove\nexpiration.", + "com.distilled.openapi#nullable": {} + } + }, + "isNdaRequired": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether to require an NDA for the viewer." + } + }, + "customerTrustAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of a Customer Trust Account to associate with this viewer.\nSet to null to remove the association.\nOmit to leave unchanged.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateTrustCenterViewer": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateTrustCenterViewerRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#TrustCenterViewer" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/trust-centers/{slugId}/viewers/{viewerId}", + "code": 200 + }, + "smithy.api#documentation": "Update Trust Center viewer\n\nUpdates a viewer's access on a Trust Center." + } + }, + "com.vanta.manage_vanta#RemoveTrustCenterViewerRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "viewerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#RemoveTrustCenterViewer": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#RemoveTrustCenterViewerRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/trust-centers/{slugId}/viewers/{viewerId}", + "code": 200 + }, + "smithy.api#documentation": "Remove Trust Center viewer\n\nRevokes a viewer's access to a Trust Center." + } + }, + "com.vanta.manage_vanta#SendTrustCenterViewerInviteReminderRequest": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "viewerId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#InviteReminderResponse": { + "type": "structure", + "members": { + "isSuccessful": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the invite reminder email was successfully sent.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Response returned after a viewer invite reminder is sent." + } + }, + "com.vanta.manage_vanta#SendTrustCenterViewerInviteReminder": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#SendTrustCenterViewerInviteReminderRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#InviteReminderResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/trust-centers/{slugId}/viewers/{viewerId}/send-invite-reminder", + "code": 200 + }, + "smithy.api#documentation": "Send Trust Center viewer invite reminder\n\nResends the invite email for a Trust Center viewer." + } + }, + "com.vanta.manage_vanta#ListUsersRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseUser": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseUserResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#User": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "isActive": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseUserResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#User" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseUserResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseUserResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListUsers": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListUsersRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseUser" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/users", + "code": 200 + }, + "smithy.api#documentation": "List active users\n\nReturns a list of all active users." + } + }, + "com.vanta.manage_vanta#GetUserRequest": { + "type": "structure", + "members": { + "userId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetUser": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetUserRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#User" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/users/{userId}", + "code": 200 + }, + "smithy.api#documentation": "Get user by ID\n\nReturns a user by ID." + } + }, + "com.vanta.manage_vanta#VendorAssessmentTypeLifecycleStatus": { + "type": "enum", + "members": { + "ACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACTIVE" + } + }, + "ARCHIVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ARCHIVED" + } + } + }, + "traits": { + "smithy.api#documentation": "The lifecycle status of a vendor assessment type:\n- ACTIVE: The assessment type is available for use.\n- ARCHIVED: The assessment type has been archived and is kept for historical reference." + } + }, + "com.vanta.manage_vanta#ListVendorAssessmentTypesRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "status": { + "target": "com.vanta.manage_vanta#VendorAssessmentTypeLifecycleStatus", + "traits": { + "smithy.api#httpQuery": "status", + "smithy.api#documentation": "Filter assessment types to a single lifecycle status" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseVendorAssessmentType": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorAssessmentTypeResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorAssessmentType": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the assessment type.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the assessment type.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the assessment type, if set.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#VendorAssessmentTypeLifecycleStatus", + "traits": { + "smithy.api#documentation": "The lifecycle status of the assessment type.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVendorAssessmentTypeResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#VendorAssessmentType" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVendorAssessmentTypeResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorAssessmentTypeResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListVendorAssessmentTypes": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListVendorAssessmentTypesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorAssessmentType" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendor-assessment-types", + "code": 200 + }, + "smithy.api#documentation": "List assessment types\n\nLists the domain's assessment types. Returns both active and archived\ntypes by default; pass the `status` query parameter to filter server-side." + } + }, + "com.vanta.manage_vanta#GetVendorAssessmentTypeByIdRequest": { + "type": "structure", + "members": { + "assessmentTypeId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetVendorAssessmentTypeById": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetVendorAssessmentTypeByIdRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#VendorAssessmentType" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendor-assessment-types/{assessmentTypeId}", + "code": 200 + }, + "smithy.api#documentation": "Get assessment type by ID\n\nGets an assessment type by ID." + } + }, + "com.vanta.manage_vanta#ListVendorRiskAttributesRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseVendorRiskAttribute": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorRiskAttributeResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorRiskAttribute": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the risk attribute.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the risk attribute.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the risk attribute.", + "smithy.api#required": {} + } + }, + "vendorCategories": { + "target": "com.vanta.manage_vanta#VendorRiskAttributeVendorCategoriesList", + "traits": { + "smithy.api#documentation": "Vendor categories this risk attribute applies to.", + "smithy.api#required": {} + } + }, + "enabled": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not this risk attribute is enabled.", + "smithy.api#required": {} + } + }, + "riskLevel": { + "target": "com.vanta.manage_vanta#VendorRiskLevel", + "traits": { + "smithy.api#documentation": "Risk level of this attribute.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorRiskAttributeVendorCategoriesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Vendor categories this risk attribute applies to." + } + }, + "com.vanta.manage_vanta#PaginatedResponseVendorRiskAttributeResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#VendorRiskAttribute" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVendorRiskAttributeResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorRiskAttributeResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListVendorRiskAttributes": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListVendorRiskAttributesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorRiskAttribute" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendor-risk-attributes", + "code": 200 + }, + "smithy.api#documentation": "List vendor risk attributes\n\nReturns a list of vendor risk attributes." + } + }, + "com.vanta.manage_vanta#ListVendorsRequestStatusMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#VendorStatus" + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListVendorsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "name", + "smithy.api#documentation": "Filter vendors by name (case-insensitive, partial match)" + } + }, + "statusMatchesAny": { + "target": "com.vanta.manage_vanta#ListVendorsRequestStatusMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "statusMatchesAny", + "smithy.api#documentation": "Filter vendors by status (can specify multiple)" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseVendor": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVendorResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Vendor" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVendorResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListVendors": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListVendorsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendor" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendors", + "code": 200 + }, + "smithy.api#documentation": "List vendors\n\nList of vendors." + } + }, + "com.vanta.manage_vanta#CreateVendorRequestAuthDetails": { + "type": "structure", + "members": { + "passwordMinimumLength": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Minimum number for chacters required for passwords for this vendor." + } + }, + "passwordRequiresSymbol": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not the vendor requires passwords to have a symbol." + } + }, + "passwordRequiresNumber": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not the vendor requires passwords to have a number." + } + }, + "passwordMFA": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not the vendor requires password multi factor authentication." + } + }, + "method": { + "target": "com.vanta.manage_vanta#VendorAuthenticationMethod", + "traits": { + "smithy.api#documentation": "The authentication method the vendor uses." + } + } + }, + "traits": { + "smithy.api#documentation": "The authentication details about the vendor." + } + }, + "com.vanta.manage_vanta#CreateVendorRequestCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomField" + }, + "traits": { + "smithy.api#documentation": "The custom fields for the vendor.\nFor more information on how to set custom fields via the API, visit https://developer.vanta.com/docs/guides/use-custom-fields-with-vendors" + } + }, + "com.vanta.manage_vanta#VendorFrameworkScope": { + "type": "structure", + "members": { + "scopeType": { + "target": "com.vanta.manage_vanta#VendorFrameworkScopeScopeType", + "traits": { + "smithy.api#documentation": "The scope type:\n- ALL: Vendor applies to all frameworks\n- PARTIAL: Vendor applies to specific frameworks (requires frameworkIds)\n- NONE: Vendor excluded from all frameworks", + "smithy.api#required": {} + } + }, + "frameworkIds": { + "target": "com.vanta.manage_vanta#VendorFrameworkScopeFrameworkIdsList", + "traits": { + "smithy.api#documentation": "Framework IDs the vendor applies to. Required when scopeType is PARTIAL." + } + } + }, + "traits": { + "smithy.api#documentation": "Framework scoping configuration for a vendor.\nDetermines which compliance frameworks the vendor applies to." + } + }, + "com.vanta.manage_vanta#VendorFrameworkScopeScopeType": { + "type": "enum", + "members": { + "ALL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ALL" + } + }, + "PARTIAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PARTIAL" + } + }, + "NONE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NONE" + } + } + }, + "traits": { + "smithy.api#documentation": "The scope type:\n- ALL: Vendor applies to all frameworks\n- PARTIAL: Vendor applies to specific frameworks (requires frameworkIds)\n- NONE: Vendor excluded from all frameworks" + } + }, + "com.vanta.manage_vanta#VendorFrameworkScopeFrameworkIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Framework IDs the vendor applies to. Required when scopeType is PARTIAL." + } + }, + "com.vanta.manage_vanta#CreateVendorRequest": { + "type": "structure", + "members": { + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the vendor.", + "smithy.api#required": {} + } + }, + "websiteUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The url of the vendor's website." + } + }, + "accountManagerName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the external account manager for this vendor." + } + }, + "accountManagerEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the external account manager for this vendor." + } + }, + "securityOwnerUserId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Vanta user ID of the security owner of this vendor." + } + }, + "servicesProvided": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Services provided by the vendor." + } + }, + "additionalNotes": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Miscellaneous notes about the vendor" + } + }, + "businessOwnerUserId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Vanta user ID of the business owner of this vendor." + } + }, + "contractStartDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the contract with the vendor is up for renewal." + } + }, + "contractRenewalDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the contract with the vendor is up for renewal." + } + }, + "contractTerminationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the contract with the vendor was terminated." + } + }, + "isVisibleToAuditors": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not auditors can view this vendor." + } + }, + "authDetails": { + "target": "com.vanta.manage_vanta#CreateVendorRequestAuthDetails", + "traits": { + "smithy.api#documentation": "The authentication details about the vendor." + } + }, + "status": { + "target": "com.vanta.manage_vanta#VendorStatus", + "traits": { + "smithy.api#documentation": "The current status of the vendor." + } + }, + "category": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vendor's category." + } + }, + "inherentRiskLevel": { + "target": "com.vanta.manage_vanta#VendorRiskLevel", + "traits": { + "smithy.api#documentation": "The inherent risk level of the vendor." + } + }, + "residualRiskLevel": { + "target": "com.vanta.manage_vanta#VendorRiskLevel", + "traits": { + "smithy.api#documentation": "The residual risk level of the vendor." + } + }, + "vendorHeadquarters": { + "target": "com.vanta.manage_vanta#CountryCode", + "traits": { + "smithy.api#documentation": "The vendor's headquarters." + } + }, + "contractAmount": { + "target": "com.vanta.manage_vanta#VendorContractAmount", + "traits": { + "smithy.api#documentation": "The contract amount for the vendor." + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#CreateVendorRequestCustomFieldsList", + "traits": { + "smithy.api#documentation": "The custom fields for the vendor.\nFor more information on how to set custom fields via the API, visit https://developer.vanta.com/docs/guides/use-custom-fields-with-vendors" + } + }, + "frameworkScope": { + "target": "com.vanta.manage_vanta#VendorFrameworkScope", + "traits": { + "smithy.api#documentation": "Framework scoping configuration for this vendor.\nDetermines which compliance frameworks the vendor applies to." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateVendor": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateVendorRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Vendor" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/vendors", + "code": 200 + }, + "smithy.api#documentation": "Create a vendor\n\nAdd vendor with metadata." + } + }, + "com.vanta.manage_vanta#GetVendorRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetVendor": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetVendorRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Vendor" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendors/{vendorId}", + "code": 200 + }, + "smithy.api#documentation": "Get vendor by ID\n\nGet a vendor." + } + }, + "com.vanta.manage_vanta#UpdateVendorRequestAuthDetails": { + "type": "structure", + "members": { + "passwordMinimumLength": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Minimum number for chacters required for passwords for this vendor." + } + }, + "passwordRequiresSymbol": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not the vendor requires passwords to have a symbol." + } + }, + "passwordRequiresNumber": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not the vendor requires passwords to have a number." + } + }, + "passwordMFA": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not the vendor requires password multi factor authentication." + } + }, + "method": { + "target": "com.vanta.manage_vanta#VendorAuthenticationMethod", + "traits": { + "smithy.api#documentation": "The authentication method the vendor uses.", + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The authentication details about the vendor." + } + }, + "com.vanta.manage_vanta#UpdateVendorRequestRiskAttributeIdsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "A list of risk attribute ids the vendor has been assigned." + } + }, + "com.vanta.manage_vanta#UpdateVendorRequestCustomFieldsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#CustomField" + }, + "traits": { + "smithy.api#documentation": "The custom fields for the vendor.\nFor more information on how to set custom fields via the API, visit https://developer.vanta.com/docs/guides/use-custom-fields-with-vendors" + } + }, + "com.vanta.manage_vanta#UpdateVendorRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the vendor." + } + }, + "websiteUrl": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The url of the vendor's website.", + "com.distilled.openapi#nullable": {} + } + }, + "accountManagerName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Name of the external account manager for this vendor.", + "com.distilled.openapi#nullable": {} + } + }, + "accountManagerEmail": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the external account manager for this vendor." + } + }, + "securityOwnerUserId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Vanta user ID of the security owner of this vendor.", + "com.distilled.openapi#nullable": {} + } + }, + "servicesProvided": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Services provided by the vendor.", + "com.distilled.openapi#nullable": {} + } + }, + "additionalNotes": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Miscellaneous notes about the vendor", + "com.distilled.openapi#nullable": {} + } + }, + "businessOwnerUserId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Vanta user ID of the business owner of this vendor.", + "com.distilled.openapi#nullable": {} + } + }, + "contractStartDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the contract with the vendor is up for renewal.", + "com.distilled.openapi#nullable": {} + } + }, + "contractRenewalDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the contract with the vendor is up for renewal.", + "com.distilled.openapi#nullable": {} + } + }, + "contractTerminationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the contract with the vendor was terminated.", + "com.distilled.openapi#nullable": {} + } + }, + "isVisibleToAuditors": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether or not auditors can view this vendor." + } + }, + "authDetails": { + "target": "com.vanta.manage_vanta#UpdateVendorRequestAuthDetails", + "traits": { + "smithy.api#documentation": "The authentication details about the vendor." + } + }, + "status": { + "target": "com.vanta.manage_vanta#VendorStatus", + "traits": { + "smithy.api#documentation": "The current status of the vendor." + } + }, + "category": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vendor's category." + } + }, + "inherentRiskLevel": { + "target": "com.vanta.manage_vanta#VendorRiskLevel", + "traits": { + "smithy.api#documentation": "The inherent risk level of the vendor.\nSetting it to null means it will be auto-scored by Vanta based on the risk attributes and rubric", + "com.distilled.openapi#nullable": {} + } + }, + "residualRiskLevel": { + "target": "com.vanta.manage_vanta#VendorRiskLevel", + "traits": { + "smithy.api#documentation": "The residual risk level of the vendor." + } + }, + "riskAttributeIds": { + "target": "com.vanta.manage_vanta#UpdateVendorRequestRiskAttributeIdsList", + "traits": { + "smithy.api#documentation": "A list of risk attribute ids the vendor has been assigned." + } + }, + "vendorHeadquarters": { + "target": "com.vanta.manage_vanta#CountryCode", + "traits": { + "smithy.api#documentation": "The vendor's headquarters.", + "com.distilled.openapi#nullable": {} + } + }, + "contractAmount": { + "target": "com.vanta.manage_vanta#VendorContractAmount", + "traits": { + "smithy.api#documentation": "The contract amount for the vendor.", + "com.distilled.openapi#nullable": {} + } + }, + "customFields": { + "target": "com.vanta.manage_vanta#UpdateVendorRequestCustomFieldsList", + "traits": { + "smithy.api#documentation": "The custom fields for the vendor.\nFor more information on how to set custom fields via the API, visit https://developer.vanta.com/docs/guides/use-custom-fields-with-vendors" + } + }, + "frameworkScope": { + "target": "com.vanta.manage_vanta#VendorFrameworkScope", + "traits": { + "smithy.api#documentation": "Framework scoping configuration for this vendor.\nDetermines which compliance frameworks the vendor applies to." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateVendor": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateVendorRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Vendor" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/vendors/{vendorId}", + "code": 200 + }, + "smithy.api#documentation": "Update vendor by ID\n\nUpdate vendor." + } + }, + "com.vanta.manage_vanta#DeleteByIdRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteById": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteByIdRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/vendors/{vendorId}", + "code": 200 + }, + "smithy.api#documentation": "Delete vendor by ID\n\nDeletes a vendor." + } + }, + "com.vanta.manage_vanta#GetAssessmentsByVendorIdRequestTypeIdMatchesAnyList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": {} + }, + "com.vanta.manage_vanta#AssessmentStatus": { + "type": "enum", + "members": { + "NOT_STARTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_STARTED" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "COMPLETED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETED" + } + } + }, + "traits": { + "smithy.api#documentation": "The lifecycle status of an assessment:\n- NOT_STARTED: The assessment has not yet been started.\n- IN_PROGRESS: The assessment is underway.\n- COMPLETED: The assessment has been completed." + } + }, + "com.vanta.manage_vanta#GetAssessmentsByVendorIdRequestStatusMatchesAnyList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#AssessmentStatus" + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetAssessmentsByVendorIdRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "typeIdMatchesAny": { + "target": "com.vanta.manage_vanta#GetAssessmentsByVendorIdRequestTypeIdMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "typeIdMatchesAny", + "smithy.api#documentation": "Filter assessments to any of the given assessment type IDs" + } + }, + "statusMatchesAny": { + "target": "com.vanta.manage_vanta#GetAssessmentsByVendorIdRequestStatusMatchesAnyList", + "traits": { + "smithy.api#httpQuery": "statusMatchesAny", + "smithy.api#documentation": "Filter assessments to any of the given statuses" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseVendorAssessment": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorAssessmentResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorAssessment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the assessment.", + "smithy.api#required": {} + } + }, + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the vendor.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#AssessmentStatus", + "traits": { + "smithy.api#documentation": "The lifecycle status of the assessment.", + "smithy.api#required": {} + } + }, + "completedByUserId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Vanta user ID of the person who completed this assessment.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "startDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The timestamp of when the assessment was started.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The timestamp of when the assessment is due.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "overrideDueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A manual override timestamp of when the assessment is due.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The timestamp of when the assessment was marked as completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "createdDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The timestamp of when the assessment was created.", + "smithy.api#required": {} + } + }, + "decision": { + "target": "com.vanta.manage_vanta#VendorAssessmentDecision", + "traits": { + "smithy.api#documentation": "An object containing information about the decision of the assessment.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "assessmentType": { + "target": "com.vanta.manage_vanta#AssessmentType", + "traits": { + "smithy.api#documentation": "The assessment type for this assessment.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "com.vanta.manage_vanta#AssessmentOwner", + "traits": { + "smithy.api#documentation": "The owner of this assessment, if assigned.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AssessmentDecision": { + "type": "enum", + "members": { + "APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPROVED" + } + }, + "NOT_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_APPROVED" + } + }, + "CONDITIONALLY_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONDITIONALLY_APPROVED" + } + } + }, + "traits": { + "smithy.api#documentation": "The current decision made for an assessment:\n- APPROVED: The assessment has been approved.\n- NOT_APPROVED: The assessment has been marked not approved.\n- CONDITIONALLY_APPROVED: The assessment has been conditionally approved." + } + }, + "com.vanta.manage_vanta#VendorAssessmentDecision": { + "type": "structure", + "members": { + "comments": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Comments about the assessment decision.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "lastUpdatedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The timestamp of when the assessment decision was last set.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#AssessmentDecision", + "traits": { + "smithy.api#documentation": "The status of the current decision.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "An object containing information about the decision of the assessment." + } + }, + "com.vanta.manage_vanta#AssessmentType": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the assessment type.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the assessment type.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the assessment type, if set.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AssessmentOwner": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the owner.", + "smithy.api#required": {} + } + }, + "type": { + "target": "com.vanta.manage_vanta#AssessmentOwnerType", + "traits": { + "smithy.api#documentation": "The type of actor that owns this assessment.", + "smithy.api#required": {} + } + }, + "displayName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the owner, if available.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "email": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Email of the owner. Populated for USER owners, null for TEAM owners.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AssessmentOwnerType": { + "type": "enum", + "members": { + "USER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USER" + } + }, + "TEAM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "TEAM" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVendorAssessmentResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#VendorAssessment" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVendorAssessmentResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorAssessmentResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetAssessmentsByVendorId": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetAssessmentsByVendorIdRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorAssessment" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendors/{vendorId}/assessments", + "code": 200 + }, + "smithy.api#documentation": "List assessments by vendor ID\n\nReturns a vendor's assessments across all assessment types." + } + }, + "com.vanta.manage_vanta#GetAssessmentByIdRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "assessmentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetAssessmentById": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetAssessmentByIdRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#VendorAssessment" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendors/{vendorId}/assessments/{assessmentId}", + "code": 200 + }, + "smithy.api#documentation": "Get assessment by ID\n\nReturns a single assessment for a vendor." + } + }, + "com.vanta.manage_vanta#ListVendorDocumentsRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseVendorDocument": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorDocumentResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorDocument": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the document.", + "smithy.api#required": {} + } + }, + "fileName": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The file name of the document.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's title.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's description", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "mimeType": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Mime type of the document.", + "smithy.api#required": {} + } + }, + "uploadedBy": { + "target": "com.vanta.manage_vanta#VendorDocumentUploadedBy", + "traits": { + "smithy.api#documentation": "The actor who uploaded this document. It could be a user or an app.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "creationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date of when the document was uploaded.", + "smithy.api#required": {} + } + }, + "updatedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the document was last updated.", + "smithy.api#required": {} + } + }, + "deletionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date of when the document was deleted. Is set to null if the document has not been deleted.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "type": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Type of the vendor document.", + "smithy.api#required": {} + } + }, + "url": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "URL link to the document", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorDocumentUploadedBy": { + "type": "structure", + "members": { + "type": { + "target": "com.vanta.manage_vanta#UploadedDocumentUploadedByType", + "traits": { + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The actor who uploaded this document. It could be a user or an app." + } + }, + "com.vanta.manage_vanta#PaginatedResponseVendorDocumentResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#VendorDocument" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVendorDocumentResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorDocumentResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListVendorDocuments": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListVendorDocumentsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorDocument" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendors/{vendorId}/documents", + "code": 200 + }, + "smithy.api#documentation": "List vendor documents\n\nReturns a vendor's list of documents." + } + }, + "com.vanta.manage_vanta#UploadDocumentToVendorRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "file": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "type": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Type of the vendor document.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's title." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's description." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UploadDocumentToVendor": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UploadDocumentToVendorRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#VendorDocument" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/vendors/{vendorId}/documents", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Add document to a vendor\n\nAdd document to a vendor.", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#ListVendorFindingsRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "securityReviewId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "securityReviewId", + "smithy.api#documentation": "Filter findings by security review ID" + } + }, + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "documentId", + "smithy.api#documentation": "Filter findings by document ID" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseVendorFinding": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorFindingResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VendorFinding": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the finding.", + "smithy.api#required": {} + } + }, + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the vendor.", + "smithy.api#required": {} + } + }, + "securityReviewId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for a security review.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for a document.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "content": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The content of the finding.", + "smithy.api#required": {} + } + }, + "riskStatus": { + "target": "com.vanta.manage_vanta#FindingRiskStatus", + "traits": { + "smithy.api#documentation": "The risk status of the finding.", + "smithy.api#required": {} + } + }, + "remediation": { + "target": "com.vanta.manage_vanta#VendorFindingRemediation", + "traits": { + "smithy.api#documentation": "Remediation information about the finding. Will only be populated if riskStatus is set to \"REMEDIATE\".", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#FindingRiskStatus": { + "type": "enum", + "members": { + "ACCEPT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCEPT" + } + }, + "REMEDIATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "REMEDIATE" + } + }, + "NONE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NONE" + } + } + }, + "traits": { + "smithy.api#documentation": "The status of the finding:\n- ACCEPT: The finding and its risk has been accepted and no follow up is required.\n- REMEDIATE: The finding needs to be remediated in some way.\n- NONE: The finding is not related to an observed risk that needs to be accepted or remediated." + } + }, + "com.vanta.manage_vanta#FindingRemediationState": { + "type": "enum", + "members": { + "OPEN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OPEN" + } + }, + "CLOSED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CLOSED" + } + } + }, + "traits": { + "smithy.api#documentation": "The current state of a finding remediation:\n- OPEN: The finding has not been remediated and still needs to be addressed.\n- CLOSED: The finding has been remediated and no further action is needed." + } + }, + "com.vanta.manage_vanta#VendorFindingRemediation": { + "type": "structure", + "members": { + "state": { + "target": "com.vanta.manage_vanta#FindingRemediationState", + "traits": { + "smithy.api#documentation": "The state of the remediation.", + "smithy.api#required": {} + } + }, + "requirementNotes": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A string containing the information needed to properly remediate the finding.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Remediation information about the finding. Will only be populated if riskStatus is set to \"REMEDIATE\"." + } + }, + "com.vanta.manage_vanta#PaginatedResponseVendorFindingResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#VendorFinding" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVendorFindingResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorFindingResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListVendorFindings": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListVendorFindingsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorFinding" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendors/{vendorId}/findings", + "code": 200 + }, + "smithy.api#documentation": "List vendor findings\n\nLists a vendor's findings." + } + }, + "com.vanta.manage_vanta#CreateVendorFindingRequestRemediation": { + "type": "structure", + "members": { + "state": { + "target": "com.vanta.manage_vanta#FindingRemediationState", + "traits": { + "smithy.api#documentation": "The state of the remediation." + } + }, + "requirementNotes": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A string containing the information needed to properly remediate the finding." + } + } + }, + "traits": { + "smithy.api#documentation": "Remediation information about the finding. Will only be populated if riskStatus is set to \"REMEDIATE\"." + } + }, + "com.vanta.manage_vanta#CreateVendorFindingRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "content": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The content of the finding.", + "smithy.api#required": {} + } + }, + "riskStatus": { + "target": "com.vanta.manage_vanta#FindingRiskStatus", + "traits": { + "smithy.api#documentation": "The risk status of the finding.", + "smithy.api#required": {} + } + }, + "remediation": { + "target": "com.vanta.manage_vanta#CreateVendorFindingRequestRemediation", + "traits": { + "smithy.api#documentation": "Remediation information about the finding. Will only be populated if riskStatus is set to \"REMEDIATE\"." + } + }, + "securityReviewId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for a security review." + } + }, + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for a document." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#CreateVendorFinding": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#CreateVendorFindingRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#VendorFinding" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/vendors/{vendorId}/findings", + "code": 200 + }, + "smithy.api#documentation": "Add a vendor finding\n\nAdd vendor finding." + } + }, + "com.vanta.manage_vanta#UpdateVendorFindingRequestRemediation": { + "type": "structure", + "members": { + "state": { + "target": "com.vanta.manage_vanta#FindingRemediationState", + "traits": { + "smithy.api#documentation": "The state of the remediation." + } + }, + "requirementNotes": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A string containing the information needed to properly remediate the finding." + } + } + }, + "traits": { + "smithy.api#documentation": "Remediation information about the finding. Will only be populated if riskStatus is set to \"REMEDIATE\"." + } + }, + "com.vanta.manage_vanta#UpdateVendorFindingRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "findingId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "content": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The content of the finding." + } + }, + "riskStatus": { + "target": "com.vanta.manage_vanta#FindingRiskStatus", + "traits": { + "smithy.api#documentation": "The risk status of the finding." + } + }, + "remediation": { + "target": "com.vanta.manage_vanta#UpdateVendorFindingRequestRemediation", + "traits": { + "smithy.api#documentation": "Remediation information about the finding. Will only be populated if riskStatus is set to \"REMEDIATE\"." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UpdateVendorFinding": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UpdateVendorFindingRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#VendorFinding" + }, + "traits": { + "smithy.api#http": { + "method": "PATCH", + "uri": "/vendors/{vendorId}/findings/{findingId}", + "code": 200 + }, + "smithy.api#documentation": "Update vendor finding\n\nUpdate vendor finding." + } + }, + "com.vanta.manage_vanta#DeleteFindingByIdRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "findingId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteFindingById": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteFindingByIdRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/vendors/{vendorId}/findings/{findingId}", + "code": 200 + }, + "smithy.api#documentation": "Delete finding by ID\n\nDeletes a finding." + } + }, + "com.vanta.manage_vanta#GetSecurityReviewsByVendorIdRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseSecurityReview": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseSecurityReviewResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#SecurityReview": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the security review.", + "smithy.api#required": {} + } + }, + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the vendor.", + "smithy.api#required": {} + } + }, + "decisionNotes": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Notes about the security review's decision status.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "comments": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Comments about the security review.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completedByUserId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Vanta user ID of the person who completed this review.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "startDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The timestamp of the when the security review was started.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "dueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The timestamp of the when the security review is due.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "overrideDueDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "A manual override timestamp of the when the security review is due.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "completionDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The timestamp of the when the security review was marked as completed.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "decision": { + "target": "com.vanta.manage_vanta#SecurityReviewDecision", + "traits": { + "smithy.api#documentation": "An object containing information about the decision of the review.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "assessmentType": { + "target": "com.vanta.manage_vanta#AssessmentType", + "traits": { + "smithy.api#documentation": "The assessment type for this security review.", + "smithy.api#required": {} + } + }, + "owner": { + "target": "com.vanta.manage_vanta#AssessmentOwner", + "traits": { + "smithy.api#documentation": "The owner of this security review, if assigned.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#SecurityReviewDecision": { + "type": "structure", + "members": { + "lastUpdatedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The timestamp of when the security review decision was last set.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.manage_vanta#AssessmentDecision", + "traits": { + "smithy.api#documentation": "The status of the current decision.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "An object containing information about the decision of the review." + } + }, + "com.vanta.manage_vanta#PaginatedResponseSecurityReviewResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#SecurityReview" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseSecurityReviewResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseSecurityReviewResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#GetSecurityReviewsByVendorId": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetSecurityReviewsByVendorIdRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseSecurityReview" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendors/{vendorId}/security-reviews", + "code": 200 + }, + "smithy.api#documentation": "List security reviews by vendor ID\n\nReturns a vendor's security reviews." + } + }, + "com.vanta.manage_vanta#GetSecurityReviewsByIdRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "securityReviewId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetSecurityReviewsById": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetSecurityReviewsByIdRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#SecurityReview" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendors/{vendorId}/security-reviews/{securityReviewId}", + "code": 200 + }, + "smithy.api#documentation": "Get security review by ID\n\nReturns a security review." + } + }, + "com.vanta.manage_vanta#GetSecurityReviewDocumentsRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "securityReviewId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetSecurityReviewDocuments": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetSecurityReviewDocumentsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseVendorDocument" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vendors/{vendorId}/security-reviews/{securityReviewId}/documents", + "code": 200 + }, + "smithy.api#documentation": "List security review documents\n\nLists a security review's documents." + } + }, + "com.vanta.manage_vanta#UploadDocumentForSecurityReviewRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "securityReviewId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "file": { + "target": "smithy.api#String", + "traits": { + "smithy.api#required": {} + } + }, + "type": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Type of the vendor document.", + "smithy.api#required": {} + } + }, + "title": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's title." + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The document's description." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#UploadDocumentForSecurityReview": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#UploadDocumentForSecurityReviewRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#VendorDocument" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/vendors/{vendorId}/security-reviews/{securityReviewId}/documents", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Add document to security review\n\nAdd document to a security review.", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#DeleteSecurityReviewDocumentByIdRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "securityReviewId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "documentId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeleteSecurityReviewDocumentById": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeleteSecurityReviewDocumentByIdRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "DELETE", + "uri": "/vendors/{vendorId}/security-reviews/{securityReviewId}/documents/{documentId}", + "code": 200 + }, + "smithy.api#documentation": "Delete a security review document by ID\n\nDelete a security review document." + } + }, + "com.vanta.manage_vanta#SetStatusForVendorRequest": { + "type": "structure", + "members": { + "vendorId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "status": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Status of the vendor", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#SetStatusForVendor": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#SetStatusForVendorRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Vendor" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/vendors/{vendorId}/set-status", + "code": 200, + "contentType": "multipart" + }, + "smithy.api#documentation": "Set vendor status\n\nSets the status of a vendor, which can be MANAGED, ARCHIVED, or IN_PROCUREMENT.", + "com.distilled.openapi#contentType": "multipart" + } + }, + "com.vanta.manage_vanta#ExternalFindingSeverity": { + "type": "enum", + "members": { + "CRITICAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRITICAL" + } + }, + "HIGH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HIGH" + } + }, + "LOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LOW" + } + }, + "MEDIUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MEDIUM" + } + } + }, + "traits": { + "smithy.api#documentation": "ExternalFindingSeverity describes the severity of an external finding (Vulnerability or Security Alert)" + } + }, + "com.vanta.manage_vanta#ListVulnerabilitiesRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "isDeactivated": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "isDeactivated", + "smithy.api#documentation": "Filter vulnerabilities by deactivation status." + } + }, + "externalVulnerabilityId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "externalVulnerabilityId", + "smithy.api#documentation": "Filter vulnerabilities based on a specific external ID." + } + }, + "isFixAvailable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "isFixAvailable", + "smithy.api#documentation": "Filter vulnerabilities that have an available fix." + } + }, + "packageIdentifier": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "packageIdentifier", + "smithy.api#documentation": "Filter vulnerabilities that are from a specific package." + } + }, + "slaDeadlineAfterDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "slaDeadlineAfterDate", + "smithy.api#documentation": "Filter vulnerabilities with a fix due after a specific timestamp." + } + }, + "slaDeadlineBeforeDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "slaDeadlineBeforeDate", + "smithy.api#documentation": "Filter vulnerabilities with a fix due before a specific timestamp." + } + }, + "severity": { + "target": "com.vanta.manage_vanta#ExternalFindingSeverity", + "traits": { + "smithy.api#httpQuery": "severity", + "smithy.api#documentation": "Filter vulnerabilities by severity.\nPossible values: CRITICAL, HIGH, MEDIUM, LOW." + } + }, + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "integrationId", + "smithy.api#documentation": "Filter vulnerabilities by the vulnerability scanner that detected them." + } + }, + "includeVulnerabilitiesWithoutSlas": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "includeVulnerabilitiesWithoutSlas", + "smithy.api#documentation": "Filter vulnerabilities without an SLA due date." + } + }, + "vulnerableAssetId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "vulnerableAssetId", + "smithy.api#documentation": "Filter vulnerabilities by a specific asset ID." + } + }, + "q": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "q", + "smithy.api#documentation": "Full-text filter on the vulnerability's name and description." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseVulnerability": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseVulnerabilityResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#Vulnerability": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the vulnerability.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the vulnerability.", + "smithy.api#required": {} + } + }, + "description": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Description of the vulnerability.", + "smithy.api#required": {} + } + }, + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Integration that the vulnerability is scanned by.", + "smithy.api#required": {} + } + }, + "packageIdentifier": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Identifier for the package that the vulnerability is found on.\nOnly relevant to vulnerabilities of type COMMON or GROUPED.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "vulnerabilityType": { + "target": "com.vanta.manage_vanta#VulnerabilityType", + "traits": { + "smithy.api#documentation": "Type of the vulnerability.\nPossible values: CONFIGURATION, COMMON, GROUPED.", + "smithy.api#required": {} + } + }, + "targetId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the underlying resource that the vulnerability is found on.", + "smithy.api#required": {} + } + }, + "firstDetectedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the vulnerability was first detected by Vanta.", + "smithy.api#required": {} + } + }, + "sourceDetectedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the vulnerability was first detected by the source.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "lastDetectedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the vulnerability was last detected.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "severity": { + "target": "com.vanta.manage_vanta#ExternalFindingSeverityType", + "traits": { + "smithy.api#documentation": "Severity of the vulnerability.\nPossible values: LOW, MEDIUM, HIGH, CRITICAL.", + "smithy.api#required": {} + } + }, + "cvssSeverityScore": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "CVSS severity score of the vulnerability.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "scannerScore": { + "target": "smithy.api#Double", + "traits": { + "smithy.api#documentation": "Scanner score of the vulnerability.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "isFixable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the vulnerability is fixable.", + "smithy.api#required": {} + } + }, + "remediateByDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the vulnerability should be remediated by.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "relatedVulns": { + "target": "com.vanta.manage_vanta#VulnerabilityRelatedVulnsList", + "traits": { + "smithy.api#documentation": "Related vulnerabilities.\nOnly relevant to vulnerabilities of type GROUPED.", + "smithy.api#required": {} + } + }, + "relatedUrls": { + "target": "com.vanta.manage_vanta#VulnerabilityRelatedUrlsList", + "traits": { + "smithy.api#documentation": "Related URLs.", + "smithy.api#required": {} + } + }, + "externalURL": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "External URL for the vulnerability.", + "smithy.api#required": {} + } + }, + "scanSource": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Scanning tool that detected the vulnerability" + } + }, + "deactivateMetadata": { + "target": "com.vanta.manage_vanta#VulnerabilityDeactivateMetadata", + "traits": { + "smithy.api#documentation": "Metadata for the deactivation of the vulnerability.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "fixedVersion": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Package version that remediates the vulnerability when reported by the scanner.\nNull when unknown or not applicable.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "externalId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Identifier for the affected asset in the source system that detected the vulnerability.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VulnerabilityType": { + "type": "enum", + "members": { + "CONFIGURATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONFIGURATION" + } + }, + "COMMON": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMMON" + } + }, + "GROUPED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "GROUPED" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ExternalFindingSeverityType": { + "type": "enum", + "members": { + "CRITICAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CRITICAL" + } + }, + "HIGH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "HIGH" + } + }, + "LOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LOW" + } + }, + "MEDIUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MEDIUM" + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VulnerabilityRelatedVulnsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Related vulnerabilities.\nOnly relevant to vulnerabilities of type GROUPED." + } + }, + "com.vanta.manage_vanta#VulnerabilityRelatedUrlsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Related URLs." + } + }, + "com.vanta.manage_vanta#VulnerabilityDeactivateMetadata": { + "type": "structure", + "members": { + "isVulnDeactivatedIndefinitely": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the vulnerability is deactivated indefinitely.", + "smithy.api#required": {} + } + }, + "deactivatedUntilDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the vulnerability will be reactivated.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "deactivationReason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Reason for deactivating the vulnerability.", + "smithy.api#required": {} + } + }, + "deactivatedOnDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the vulnerability was deactivated.", + "smithy.api#required": {} + } + }, + "deactivatedBy": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Identifier of the user who deactivated the vulnerability.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "Metadata for the deactivation of the vulnerability." + } + }, + "com.vanta.manage_vanta#PaginatedResponseVulnerabilityResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#Vulnerability" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVulnerabilityResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseVulnerabilityResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListVulnerabilities": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListVulnerabilitiesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseVulnerability" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vulnerabilities", + "code": 200 + }, + "smithy.api#documentation": "Get vulnerabilities\n\nList all vulnerabilities based on selected filters." + } + }, + "com.vanta.manage_vanta#VulnerabilityDeactivateRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the vulnerability to deactivate.", + "smithy.api#required": {} + } + }, + "deactivateUntilDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date until which the vulnerability should be deactivated." + } + }, + "deactivateReason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Reason for deactivating the vulnerability.", + "smithy.api#required": {} + } + }, + "shouldReactivateWhenFixable": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Determines whether or not vulnerabilities should reactivate when they become fixable.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#DeactivateVulnerabilitiesRequestUpdatesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#VulnerabilityDeactivateRequest" + }, + "traits": { + "smithy.api#documentation": "List of vulnerabilities to deactivate." + } + }, + "com.vanta.manage_vanta#DeactivateVulnerabilitiesRequest": { + "type": "structure", + "members": { + "updates": { + "target": "com.vanta.manage_vanta#DeactivateVulnerabilitiesRequestUpdatesList", + "traits": { + "smithy.api#documentation": "List of vulnerabilities to deactivate.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#DeactivateVulnerabilities": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#DeactivateVulnerabilitiesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#BulkResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/vulnerabilities/deactivate", + "code": 200 + }, + "smithy.api#documentation": "Deactivate vulnerability monitoring for a vulnerability\n\nDeactivate monitoring for select vulnerabilities.\nVanta will not monitor a deactivated vulnerability until it is reactivated." + } + }, + "com.vanta.manage_vanta#ReactivateVulnerabilitiesRequestUpdatesItem": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "ID of the vulnerability to reactivate.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ReactivateVulnerabilitiesRequestUpdatesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#ReactivateVulnerabilitiesRequestUpdatesItem" + }, + "traits": { + "smithy.api#documentation": "List of vulnerability IDs to reactivate." + } + }, + "com.vanta.manage_vanta#ReactivateVulnerabilitiesRequest": { + "type": "structure", + "members": { + "updates": { + "target": "com.vanta.manage_vanta#ReactivateVulnerabilitiesRequestUpdatesList", + "traits": { + "smithy.api#documentation": "List of vulnerability IDs to reactivate.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#ReactivateVulnerabilities": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ReactivateVulnerabilitiesRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#BulkResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/vulnerabilities/reactivate", + "code": 200 + }, + "smithy.api#documentation": "Reactivate vulnerability monitoring\n\nReactivate vulnerabilities and resume Vanta monitoring." + } + }, + "com.vanta.manage_vanta#GetVulnerabilityRequest": { + "type": "structure", + "members": { + "vulnerabilityId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetVulnerability": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetVulnerabilityRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#Vulnerability" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vulnerabilities/{vulnerabilityId}", + "code": 200 + }, + "smithy.api#documentation": "Get vulnerability by ID\n\nGets a vulnerability by an ID." + } + }, + "com.vanta.manage_vanta#ListVulnerabilityRemediationsRequest": { + "type": "structure", + "members": { + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "integrationId", + "smithy.api#documentation": "Filter vulnerability remediations based on a specific scanner integration." + } + }, + "severity": { + "target": "com.vanta.manage_vanta#ExternalFindingSeverity", + "traits": { + "smithy.api#httpQuery": "severity", + "smithy.api#documentation": "Filter vulnerability remediations by severity.\nPossible values: CRITICAL, HIGH, MEDIUM, LOW." + } + }, + "isRemediatedOnTime": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#httpQuery": "isRemediatedOnTime", + "smithy.api#documentation": "Filter vulnerability remediations by remediation status." + } + }, + "remediatedAfterDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "remediatedAfterDate", + "smithy.api#documentation": "Filter vulnerability remediations that occurred after a specific timestamp." + } + }, + "remediatedBeforeDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "remediatedBeforeDate", + "smithy.api#documentation": "Filter vulnerability remediations that occurred before a specific timestamp." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseVulnerabilityRemediation": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseVulnerabilityRemediationResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VulnerabilityRemediation": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the remediation.", + "smithy.api#required": {} + } + }, + "vulnerabilityId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the vulnerability that the remediation is for.", + "smithy.api#required": {} + } + }, + "vulnerableAssetId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the vulnerable asset that the remediation is for.", + "smithy.api#required": {} + } + }, + "severity": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Severity of the vulnerability.", + "smithy.api#required": {} + } + }, + "detectedDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the vulnerability was first detected.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "slaDeadlineDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the vulnerability should be remediated by.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "remediationDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Date when the vulnerability was remediated.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVulnerabilityRemediationResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#VulnerabilityRemediation" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVulnerabilityRemediationResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseVulnerabilityRemediationResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListVulnerabilityRemediations": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListVulnerabilityRemediationsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseVulnerabilityRemediation" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vulnerability-remediations", + "code": 200 + }, + "smithy.api#documentation": "List vulnerability remediations\n\nList all vulnerability remediations based on selected filters." + } + }, + "com.vanta.manage_vanta#AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesItem": { + "type": "structure", + "members": { + "slaViolationComment": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "SLA miss acknowledgement comment. This comment should describe why the SLA was missed.", + "smithy.api#required": {} + } + }, + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Remediation IDs", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesItem" + }, + "traits": { + "smithy.api#documentation": "List of vulnerability remediation IDs." + } + }, + "com.vanta.manage_vanta#AcknowledgeSlaMissVulnerabilityRemediationsRequest": { + "type": "structure", + "members": { + "updates": { + "target": "com.vanta.manage_vanta#AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesList", + "traits": { + "smithy.api#documentation": "List of vulnerability remediation IDs.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#AcknowledgeSlaMissVulnerabilityRemediations": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#AcknowledgeSlaMissVulnerabilityRemediationsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#BulkResponse" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/vulnerability-remediations/acknowledge-sla-miss", + "code": 200 + }, + "smithy.api#documentation": "Acknowledge SLA miss\n\nAcknowledge an SLA miss for a vulnerability remediation." + } + }, + "com.vanta.manage_vanta#VulnerableAssetType": { + "type": "enum", + "members": { + "SERVER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SERVER" + } + }, + "SERVERLESS_FUNCTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SERVERLESS_FUNCTION" + } + }, + "CONTAINER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTAINER" + } + }, + "CONTAINER_REPOSITORY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTAINER_REPOSITORY" + } + }, + "CONTAINER_REPOSITORY_IMAGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONTAINER_REPOSITORY_IMAGE" + } + }, + "CODE_REPOSITORY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CODE_REPOSITORY" + } + }, + "MANIFEST_FILE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MANIFEST_FILE" + } + }, + "WORKSTATION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WORKSTATION" + } + }, + "OTHER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "OTHER" + } + } + }, + "traits": { + "smithy.api#documentation": "VulnerableAssetType describes the types of assets a vulnerability is on." + } + }, + "com.vanta.manage_vanta#ListVulnerableAssetsRequest": { + "type": "structure", + "members": { + "q": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "q", + "smithy.api#documentation": "Filter vulnerable assets by search query." + } + }, + "pageSize": { + "target": "smithy.api#Integer", + "traits": { + "smithy.api#httpQuery": "pageSize" + } + }, + "pageCursor": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "pageCursor" + } + }, + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "integrationId", + "smithy.api#documentation": "Filter vulnerable assets by specific vulnerability scanner." + } + }, + "assetType": { + "target": "com.vanta.manage_vanta#VulnerableAssetType", + "traits": { + "smithy.api#httpQuery": "assetType", + "smithy.api#documentation": "Filter vulnerable assets by asset type.\nPossible values: CODE_REPOSITORY, CONTAINER_REPOSITORY, CONTAINER_REPOSITORY_IMAGE, MANIFEST_FILE, SERVER, SERVERLESS_FUNCTION, WORKSTATION." + } + }, + "assetExternalAccountId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpQuery": "assetExternalAccountId", + "smithy.api#documentation": "Filter vulnerable assets by..." + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#PaginatedResponseVulnerableAsset": { + "type": "structure", + "members": { + "results": { + "target": "com.vanta.manage_vanta#PaginatedResponseVulnerableAssetResults", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VulnerableAsset": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Unique identifier for the vulnerable asset.", + "smithy.api#required": {} + } + }, + "name": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Display name of the vulnerable asset.", + "smithy.api#required": {} + } + }, + "assetType": { + "target": "com.vanta.manage_vanta#VulnerableAssetType", + "traits": { + "smithy.api#documentation": "Type of the vulnerable asset.\nPossible values: CODE_REPOSITORY, CONTAINER_REPOSITORY, CONTAINER_REPOSITORY_IMAGE, MANIFEST_FILE, SERVER, SERVERLESS_FUNCTION, WORKSTATION.", + "smithy.api#required": {} + } + }, + "hasBeenScanned": { + "target": "smithy.api#Boolean", + "traits": { + "smithy.api#documentation": "Whether the vulnerable asset has been scanned.", + "smithy.api#required": {} + } + }, + "imageScanTag": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Only relevant for container repositories. This field sets the container image tag that vulnerabilities will be retrieved for. If null, the latest image will be retrieved.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "scanners": { + "target": "com.vanta.manage_vanta#VulnerableAssetScannersList", + "traits": { + "smithy.api#documentation": "The integrations that are scanning this vulnerable asset.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VulnerableAssetScanner": { + "type": "structure", + "members": { + "resourceId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The scanned asset's Vanta resource id.", + "smithy.api#required": {} + } + }, + "integrationId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Integration that the the vulnerable asset is scanned by.", + "smithy.api#required": {} + } + }, + "imageDigest": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Digest of the scanned container image.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "imagePushedAtDate": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Push date of the scanned container image.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "imageTags": { + "target": "com.vanta.manage_vanta#VulnerableAssetScannerImageTagsList", + "traits": { + "smithy.api#documentation": "Tags of the scanned container image.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "assetTags": { + "target": "com.vanta.manage_vanta#VulnerableAssetScannerAssetTagsList", + "traits": { + "smithy.api#documentation": "Tags of the scanned asset.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "parentAccountOrOrganization": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The parent account or organization of the scanned asset.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "biosUuid": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "BIOS UUID of the scanned asset.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "ipv4s": { + "target": "com.vanta.manage_vanta#VulnerableAssetScannerIpv4sList", + "traits": { + "smithy.api#documentation": "IPV4s of the scanned asset.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "ipv6s": { + "target": "com.vanta.manage_vanta#VulnerableAssetScannerIpv6sList", + "traits": { + "smithy.api#documentation": "IPV6s of the scanned asset.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "macAddresses": { + "target": "com.vanta.manage_vanta#VulnerableAssetScannerMacAddressesList", + "traits": { + "smithy.api#documentation": "Mac addresses of the scanned asset.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "hostnames": { + "target": "com.vanta.manage_vanta#VulnerableAssetScannerHostnamesList", + "traits": { + "smithy.api#documentation": "Host names of the scanned asset.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "fqdns": { + "target": "com.vanta.manage_vanta#VulnerableAssetScannerFqdnsList", + "traits": { + "smithy.api#documentation": "fqdns of the scanned asset.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "operatingSystems": { + "target": "com.vanta.manage_vanta#VulnerableAssetScannerOperatingSystemsList", + "traits": { + "smithy.api#documentation": "Operating systems of the scanned asset.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + }, + "targetId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The asset's identifier code.", + "smithy.api#required": {}, + "com.distilled.openapi#nullable": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VulnerableAssetScannerImageTagsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Tags of the scanned container image." + } + }, + "com.vanta.manage_vanta#KeyValuePair": { + "type": "structure", + "members": { + "key": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Key of key-value pair.", + "smithy.api#required": {} + } + }, + "value": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Value of key-value pair.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#VulnerableAssetScannerAssetTagsList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#KeyValuePair" + }, + "traits": { + "smithy.api#documentation": "Tags of the scanned asset." + } + }, + "com.vanta.manage_vanta#VulnerableAssetScannerIpv4sList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IPV4s of the scanned asset." + } + }, + "com.vanta.manage_vanta#VulnerableAssetScannerIpv6sList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "IPV6s of the scanned asset." + } + }, + "com.vanta.manage_vanta#VulnerableAssetScannerMacAddressesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Mac addresses of the scanned asset." + } + }, + "com.vanta.manage_vanta#VulnerableAssetScannerHostnamesList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Host names of the scanned asset." + } + }, + "com.vanta.manage_vanta#VulnerableAssetScannerFqdnsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "fqdns of the scanned asset." + } + }, + "com.vanta.manage_vanta#VulnerableAssetScannerOperatingSystemsList": { + "type": "list", + "member": { + "target": "smithy.api#String" + }, + "traits": { + "smithy.api#documentation": "Operating systems of the scanned asset." + } + }, + "com.vanta.manage_vanta#VulnerableAssetScannersList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#VulnerableAssetScanner" + }, + "traits": { + "smithy.api#documentation": "The integrations that are scanning this vulnerable asset." + } + }, + "com.vanta.manage_vanta#PaginatedResponseVulnerableAssetResultsDataList": { + "type": "list", + "member": { + "target": "com.vanta.manage_vanta#VulnerableAsset" + }, + "traits": {} + }, + "com.vanta.manage_vanta#PaginatedResponseVulnerableAssetResults": { + "type": "structure", + "members": { + "data": { + "target": "com.vanta.manage_vanta#PaginatedResponseVulnerableAssetResultsDataList", + "traits": { + "smithy.api#required": {} + } + }, + "pageInfo": { + "target": "com.vanta.manage_vanta#PageInfo", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.manage_vanta#ListVulnerableAssets": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#ListVulnerableAssetsRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#PaginatedResponseVulnerableAsset" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vulnerable-assets", + "code": 200 + }, + "smithy.api#documentation": "List assets associated with vulnerabilities\n\nList assets that Vanta monitors that are associated with vulnerabilities." + } + }, + "com.vanta.manage_vanta#GetVulnerableAssetRequest": { + "type": "structure", + "members": { + "vulnerableAssetId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.manage_vanta#GetVulnerableAsset": { + "type": "operation", + "input": { + "target": "com.vanta.manage_vanta#GetVulnerableAssetRequest" + }, + "output": { + "target": "com.vanta.manage_vanta#VulnerableAsset" + }, + "traits": { + "smithy.api#http": { + "method": "GET", + "uri": "/vulnerable-assets/{vulnerableAssetId}", + "code": 200 + }, + "smithy.api#documentation": "Get vulnerable asset by ID\n\nGets a vulnerable asset by ID." + } + }, + "com.vanta.manage_vanta#ManageVanta": { + "type": "service", + "version": "1.0.0", + "operations": [ + { + "target": "com.vanta.manage_vanta#ListContracts" + }, + { + "target": "com.vanta.manage_vanta#UploadContract" + }, + { + "target": "com.vanta.manage_vanta#GetContract" + }, + { + "target": "com.vanta.manage_vanta#DeleteContract" + }, + { + "target": "com.vanta.manage_vanta#ListControls" + }, + { + "target": "com.vanta.manage_vanta#CreateCustomControl" + }, + { + "target": "com.vanta.manage_vanta#AddControlFromLibrary" + }, + { + "target": "com.vanta.manage_vanta#ListDeactivatedControls" + }, + { + "target": "com.vanta.manage_vanta#GetControl" + }, + { + "target": "com.vanta.manage_vanta#UpdateControlMetadata" + }, + { + "target": "com.vanta.manage_vanta#DeleteControl" + }, + { + "target": "com.vanta.manage_vanta#AddDocumentToControl" + }, + { + "target": "com.vanta.manage_vanta#AddTestToControl" + }, + { + "target": "com.vanta.manage_vanta#ListDocumentsForControl" + }, + { + "target": "com.vanta.manage_vanta#DeleteDocumentForcontrol" + }, + { + "target": "com.vanta.manage_vanta#SetOwnerForControl" + }, + { + "target": "com.vanta.manage_vanta#ListTestsForControl" + }, + { + "target": "com.vanta.manage_vanta#DeleteTestForControl" + }, + { + "target": "com.vanta.manage_vanta#ListCustomerTrustAccounts" + }, + { + "target": "com.vanta.manage_vanta#CreateCustomerTrustAccount" + }, + { + "target": "com.vanta.manage_vanta#GetCustomerTrustAccount" + }, + { + "target": "com.vanta.manage_vanta#UpdateCustomerTrustAccount" + }, + { + "target": "com.vanta.manage_vanta#DeleteCustomerTrustAccount" + }, + { + "target": "com.vanta.manage_vanta#CreateDeletionRequest" + }, + { + "target": "com.vanta.manage_vanta#ListQuestionnaires" + }, + { + "target": "com.vanta.manage_vanta#ListAssignableUsers" + }, + { + "target": "com.vanta.manage_vanta#CreateQuestionnaireExport" + }, + { + "target": "com.vanta.manage_vanta#GetQuestionnaireExport" + }, + { + "target": "com.vanta.manage_vanta#CreateFileQuestionnaire" + }, + { + "target": "com.vanta.manage_vanta#CreateWebsiteQuestionnaire" + }, + { + "target": "com.vanta.manage_vanta#GetQuestionnaire" + }, + { + "target": "com.vanta.manage_vanta#UpdateQuestionnaire" + }, + { + "target": "com.vanta.manage_vanta#DeleteQuestionnaire" + }, + { + "target": "com.vanta.manage_vanta#ApproveQuestionnaire" + }, + { + "target": "com.vanta.manage_vanta#CompleteQuestionnaire" + }, + { + "target": "com.vanta.manage_vanta#ListQuestionnaireResponses" + }, + { + "target": "com.vanta.manage_vanta#GetQuestionnaireResponse" + }, + { + "target": "com.vanta.manage_vanta#UpdateQuestionnaireResponseContent" + }, + { + "target": "com.vanta.manage_vanta#UpdateQuestionnaireResponseOwner" + }, + { + "target": "com.vanta.manage_vanta#ListTagCategories" + }, + { + "target": "com.vanta.manage_vanta#GetTagsForCategory" + }, + { + "target": "com.vanta.manage_vanta#AddTagCategoryProductContext" + }, + { + "target": "com.vanta.manage_vanta#RemoveTagCategoryProductContext" + }, + { + "target": "com.vanta.manage_vanta#ListDiscoveredVendors" + }, + { + "target": "com.vanta.manage_vanta#ListDiscoveredVendorAccounts" + }, + { + "target": "com.vanta.manage_vanta#AddDiscoveredVendorToManaged" + }, + { + "target": "com.vanta.manage_vanta#ListDocuments" + }, + { + "target": "com.vanta.manage_vanta#CreateDocument" + }, + { + "target": "com.vanta.manage_vanta#GetDocument" + }, + { + "target": "com.vanta.manage_vanta#DeleteDocument" + }, + { + "target": "com.vanta.manage_vanta#ListControlsForDocument" + }, + { + "target": "com.vanta.manage_vanta#ListLinksForDocument" + }, + { + "target": "com.vanta.manage_vanta#CreateLinkForDocument" + }, + { + "target": "com.vanta.manage_vanta#DeleteLinkForDocument" + }, + { + "target": "com.vanta.manage_vanta#SetOwnerForDocument" + }, + { + "target": "com.vanta.manage_vanta#SubmitDocumentCollection" + }, + { + "target": "com.vanta.manage_vanta#ListFilesForDocument" + }, + { + "target": "com.vanta.manage_vanta#UploadFileForDocument" + }, + { + "target": "com.vanta.manage_vanta#DeleteFileForDocument" + }, + { + "target": "com.vanta.manage_vanta#GetUploadedfileMedia" + }, + { + "target": "com.vanta.manage_vanta#ListEventLogs" + }, + { + "target": "com.vanta.manage_vanta#ListFrameworks" + }, + { + "target": "com.vanta.manage_vanta#GetFramework" + }, + { + "target": "com.vanta.manage_vanta#ListControlsForFramework" + }, + { + "target": "com.vanta.manage_vanta#ListPersonGroups" + }, + { + "target": "com.vanta.manage_vanta#CreateGroup" + }, + { + "target": "com.vanta.manage_vanta#ImportIdpGroups" + }, + { + "target": "com.vanta.manage_vanta#ListImportableIdpGroups" + }, + { + "target": "com.vanta.manage_vanta#GetGroup" + }, + { + "target": "com.vanta.manage_vanta#AddPeopleToGroup" + }, + { + "target": "com.vanta.manage_vanta#GetGroupMembers" + }, + { + "target": "com.vanta.manage_vanta#AddPersonToGroup" + }, + { + "target": "com.vanta.manage_vanta#RemovePersonFromGroup" + }, + { + "target": "com.vanta.manage_vanta#RemovePeopleFromGroup" + }, + { + "target": "com.vanta.manage_vanta#ListConnectedIntegrations" + }, + { + "target": "com.vanta.manage_vanta#GetConnectedIntegration" + }, + { + "target": "com.vanta.manage_vanta#ListResourceKindSummaries" + }, + { + "target": "com.vanta.manage_vanta#GetResourceKindDetails" + }, + { + "target": "com.vanta.manage_vanta#ListResources" + }, + { + "target": "com.vanta.manage_vanta#UpdateResources" + }, + { + "target": "com.vanta.manage_vanta#GetResource" + }, + { + "target": "com.vanta.manage_vanta#UpdateResource" + }, + { + "target": "com.vanta.manage_vanta#List" + }, + { + "target": "com.vanta.manage_vanta#GetIssue" + }, + { + "target": "com.vanta.manage_vanta#ListAnswerLibraryEntries" + }, + { + "target": "com.vanta.manage_vanta#CreateAnswerLibraryEntry" + }, + { + "target": "com.vanta.manage_vanta#GetAnswerLibraryEntry" + }, + { + "target": "com.vanta.manage_vanta#UpdateAnswerLibraryEntryRoute" + }, + { + "target": "com.vanta.manage_vanta#DeleteAnswerLibraryEntryRoute" + }, + { + "target": "com.vanta.manage_vanta#VerifyAnswerLibraryEntryRoute" + }, + { + "target": "com.vanta.manage_vanta#ListKnowledgeBaseResources" + }, + { + "target": "com.vanta.manage_vanta#CreateDocumentResource" + }, + { + "target": "com.vanta.manage_vanta#UpdateDocumentResource" + }, + { + "target": "com.vanta.manage_vanta#ReplaceDocumentResourceFile" + }, + { + "target": "com.vanta.manage_vanta#CreateWebpageResource" + }, + { + "target": "com.vanta.manage_vanta#UpdateWebpageResource" + }, + { + "target": "com.vanta.manage_vanta#GetKnowledgeBaseResource" + }, + { + "target": "com.vanta.manage_vanta#DeleteKnowledgeBaseResource" + }, + { + "target": "com.vanta.manage_vanta#VerifyKnowledgeBaseResource" + }, + { + "target": "com.vanta.manage_vanta#ListMonitoredComputers" + }, + { + "target": "com.vanta.manage_vanta#GetMonitoredComputer" + }, + { + "target": "com.vanta.manage_vanta#ListPeople" + }, + { + "target": "com.vanta.manage_vanta#MarkAsNotPeople" + }, + { + "target": "com.vanta.manage_vanta#MarkAsPeople" + }, + { + "target": "com.vanta.manage_vanta#OffboardPeople" + }, + { + "target": "com.vanta.manage_vanta#GetPerson" + }, + { + "target": "com.vanta.manage_vanta#UpdatePerson" + }, + { + "target": "com.vanta.manage_vanta#ClearLeaveForPerson" + }, + { + "target": "com.vanta.manage_vanta#SetLeaveForPerson" + }, + { + "target": "com.vanta.manage_vanta#ListPolicies" + }, + { + "target": "com.vanta.manage_vanta#GetPolicy" + }, + { + "target": "com.vanta.manage_vanta#ListRiskScenario" + }, + { + "target": "com.vanta.manage_vanta#CreateRiskScenario" + }, + { + "target": "com.vanta.manage_vanta#GetRiskScenario" + }, + { + "target": "com.vanta.manage_vanta#UpdateRiskScenario" + }, + { + "target": "com.vanta.manage_vanta#CancelRiskScenarioApprovalRequest" + }, + { + "target": "com.vanta.manage_vanta#ListRiskScenarioControls" + }, + { + "target": "com.vanta.manage_vanta#CreateRiskScenarioControl" + }, + { + "target": "com.vanta.manage_vanta#UpdateRiskScenarioControl" + }, + { + "target": "com.vanta.manage_vanta#DeleteRiskScenarioControl" + }, + { + "target": "com.vanta.manage_vanta#SubmitRiskForApproval" + }, + { + "target": "com.vanta.manage_vanta#ListTests" + }, + { + "target": "com.vanta.manage_vanta#GetTest" + }, + { + "target": "com.vanta.manage_vanta#GetTestEntities" + }, + { + "target": "com.vanta.manage_vanta#DeactivateTestEntity" + }, + { + "target": "com.vanta.manage_vanta#ReactivateTestEntity" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenter" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenter" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterAccessRequests" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterAccessRequest" + }, + { + "target": "com.vanta.manage_vanta#ApproveTrustCenterAccessRequest" + }, + { + "target": "com.vanta.manage_vanta#DenyTrustCenterAccessRequest" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterActivityEvents" + }, + { + "target": "com.vanta.manage_vanta#ListChatbotConversations" + }, + { + "target": "com.vanta.manage_vanta#GetChatbotConversationMessages" + }, + { + "target": "com.vanta.manage_vanta#ListComplianceFrameworks" + }, + { + "target": "com.vanta.manage_vanta#CreateComplianceFramework" + }, + { + "target": "com.vanta.manage_vanta#UpdateComplianceFramework" + }, + { + "target": "com.vanta.manage_vanta#DeleteComplianceFramework" + }, + { + "target": "com.vanta.manage_vanta#UploadComplianceFrameworkBadge" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterControlCategories" + }, + { + "target": "com.vanta.manage_vanta#AddTrustCenterControlCategory" + }, + { + "target": "com.vanta.manage_vanta#UpsertTrustCenterControlCategoriesOrder" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterControlCategory" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenterControlCategory" + }, + { + "target": "com.vanta.manage_vanta#DeleteTrustCenterControlCategory" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenterControlsInCategory" + }, + { + "target": "com.vanta.manage_vanta#UpsertTrustCenterControlsInCategoryOrder" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterControls" + }, + { + "target": "com.vanta.manage_vanta#AddControlToTrustCenter" + }, + { + "target": "com.vanta.manage_vanta#BulkAddTagsToControls" + }, + { + "target": "com.vanta.manage_vanta#BulkRemoveTagsFromControls" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterControl" + }, + { + "target": "com.vanta.manage_vanta#DeleteTrustCenterControl" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterDataCollected" + }, + { + "target": "com.vanta.manage_vanta#UpsertTrustCenterDataCollected" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterFaqCategories" + }, + { + "target": "com.vanta.manage_vanta#AddTrustCenterFaqCategory" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenterFaqCategory" + }, + { + "target": "com.vanta.manage_vanta#DeleteTrustCenterFaqCategory" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterFaqs" + }, + { + "target": "com.vanta.manage_vanta#CreateTrustCenterFaq" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterFaq" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenterFaq" + }, + { + "target": "com.vanta.manage_vanta#DeleteTrustCenterFaq" + }, + { + "target": "com.vanta.manage_vanta#UploadTrustCenterFavicon" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterHistoricalAccessRequests" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterResourceCategories" + }, + { + "target": "com.vanta.manage_vanta#AddTrustCenterResourceCategory" + }, + { + "target": "com.vanta.manage_vanta#UpsertTrustCenterResourceCategoriesOrder" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenterResourceCategory" + }, + { + "target": "com.vanta.manage_vanta#DeleteTrustCenterResourceCategory" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterResources" + }, + { + "target": "com.vanta.manage_vanta#CreateTrustCenterResource" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterResource" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenterResource" + }, + { + "target": "com.vanta.manage_vanta#DeleteTrustCenterResource" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterResourceMedia" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterSubprocessors" + }, + { + "target": "com.vanta.manage_vanta#CreateTrustCenterSubprocessor" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterSubprocessor" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenterSubprocessor" + }, + { + "target": "com.vanta.manage_vanta#DeleteTrustCenterSubprocessor" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterSubscriberGroups" + }, + { + "target": "com.vanta.manage_vanta#CreateTrustCenterSubscriberGroup" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterSubscriberGroup" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenterSubscriberGroup" + }, + { + "target": "com.vanta.manage_vanta#DeleteTrustCenterSubscriberGroup" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterSubscribers" + }, + { + "target": "com.vanta.manage_vanta#CreateTrustCenterSubscriber" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterSubscriber" + }, + { + "target": "com.vanta.manage_vanta#DeleteTrustCenterSubscriber" + }, + { + "target": "com.vanta.manage_vanta#UpsertGroupsForTrustCenterSubscriber" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterUpdates" + }, + { + "target": "com.vanta.manage_vanta#CreateTrustCenterUpdate" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterUpdate" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenterUpdate" + }, + { + "target": "com.vanta.manage_vanta#DeleteTrustCenterUpdate" + }, + { + "target": "com.vanta.manage_vanta#SendNotificationsToAllSubscribers" + }, + { + "target": "com.vanta.manage_vanta#SendTrustCenterUpdateNotifications" + }, + { + "target": "com.vanta.manage_vanta#UpsertTrustCenterVideos" + }, + { + "target": "com.vanta.manage_vanta#ListTrustCenterViewers" + }, + { + "target": "com.vanta.manage_vanta#AddTrustCenterViewer" + }, + { + "target": "com.vanta.manage_vanta#GetTrustCenterViewer" + }, + { + "target": "com.vanta.manage_vanta#UpdateTrustCenterViewer" + }, + { + "target": "com.vanta.manage_vanta#RemoveTrustCenterViewer" + }, + { + "target": "com.vanta.manage_vanta#SendTrustCenterViewerInviteReminder" + }, + { + "target": "com.vanta.manage_vanta#ListUsers" + }, + { + "target": "com.vanta.manage_vanta#GetUser" + }, + { + "target": "com.vanta.manage_vanta#ListVendorAssessmentTypes" + }, + { + "target": "com.vanta.manage_vanta#GetVendorAssessmentTypeById" + }, + { + "target": "com.vanta.manage_vanta#ListVendorRiskAttributes" + }, + { + "target": "com.vanta.manage_vanta#ListVendors" + }, + { + "target": "com.vanta.manage_vanta#CreateVendor" + }, + { + "target": "com.vanta.manage_vanta#GetVendor" + }, + { + "target": "com.vanta.manage_vanta#UpdateVendor" + }, + { + "target": "com.vanta.manage_vanta#DeleteById" + }, + { + "target": "com.vanta.manage_vanta#GetAssessmentsByVendorId" + }, + { + "target": "com.vanta.manage_vanta#GetAssessmentById" + }, + { + "target": "com.vanta.manage_vanta#ListVendorDocuments" + }, + { + "target": "com.vanta.manage_vanta#UploadDocumentToVendor" + }, + { + "target": "com.vanta.manage_vanta#ListVendorFindings" + }, + { + "target": "com.vanta.manage_vanta#CreateVendorFinding" + }, + { + "target": "com.vanta.manage_vanta#UpdateVendorFinding" + }, + { + "target": "com.vanta.manage_vanta#DeleteFindingById" + }, + { + "target": "com.vanta.manage_vanta#GetSecurityReviewsByVendorId" + }, + { + "target": "com.vanta.manage_vanta#GetSecurityReviewsById" + }, + { + "target": "com.vanta.manage_vanta#GetSecurityReviewDocuments" + }, + { + "target": "com.vanta.manage_vanta#UploadDocumentForSecurityReview" + }, + { + "target": "com.vanta.manage_vanta#DeleteSecurityReviewDocumentById" + }, + { + "target": "com.vanta.manage_vanta#SetStatusForVendor" + }, + { + "target": "com.vanta.manage_vanta#ListVulnerabilities" + }, + { + "target": "com.vanta.manage_vanta#DeactivateVulnerabilities" + }, + { + "target": "com.vanta.manage_vanta#ReactivateVulnerabilities" + }, + { + "target": "com.vanta.manage_vanta#GetVulnerability" + }, + { + "target": "com.vanta.manage_vanta#ListVulnerabilityRemediations" + }, + { + "target": "com.vanta.manage_vanta#AcknowledgeSlaMissVulnerabilityRemediations" + }, + { + "target": "com.vanta.manage_vanta#ListVulnerableAssets" + }, + { + "target": "com.vanta.manage_vanta#GetVulnerableAsset" + } + ], + "traits": { + "smithy.api#title": "Manage Vanta", + "smithy.api#documentation": "The REST API lets customers query and mutate Vanta's data. Use this API to automate bulk actions, query data for custom workflows and dashboards, and bolster your security operations\n\n**Note for Vanta Gov (FedRAMP) customers:** Select `Vanta Gov (FedRAMP)` from the server dropdown to issue requests against `https://api.vanta-gov.com`. The OAuth token URL shown below defaults to the commercial host — replace it with `https://api.vanta-gov.com/oauth/token`." + } + } + } +} diff --git a/packages/vanta/.generated-specs/webhooks.json b/packages/vanta/.generated-specs/webhooks.json new file mode 100644 index 000000000..2c4869166 --- /dev/null +++ b/packages/vanta/.generated-specs/webhooks.json @@ -0,0 +1,2037 @@ +{ + "smithy": "2.0", + "metadata": { + "suppressions": [ + { + "id": "HttpUriConflict", + "namespace": "*" + }, + { + "id": "HttpMethodSemantics", + "namespace": "*" + }, + { + "id": "UnreferencedShape", + "namespace": "*" + } + ] + }, + "shapes": { + "com.vanta.webhooks#V1QuestionnaireCreatedRequestQuestionnaire": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The questionnaire ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1QuestionnaireCreatedRequest": { + "type": "structure", + "members": { + "questionnaire": { + "target": "com.vanta.webhooks#V1QuestionnaireCreatedRequestQuestionnaire", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1QuestionnaireCreated": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1QuestionnaireCreatedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.questionnaire.created", + "code": 200 + }, + "smithy.api#documentation": "Questionnaire created\n\nA questionnaire was created." + } + }, + "com.vanta.webhooks#V1QuestionnaireDeletedRequestQuestionnaire": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The questionnaire ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1QuestionnaireDeletedRequest": { + "type": "structure", + "members": { + "questionnaire": { + "target": "com.vanta.webhooks#V1QuestionnaireDeletedRequestQuestionnaire", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1QuestionnaireDeleted": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1QuestionnaireDeletedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.questionnaire.deleted", + "code": 200 + }, + "smithy.api#documentation": "Questionnaire deleted\n\nA questionnaire was deleted." + } + }, + "com.vanta.webhooks#V1QuestionnaireStatusChangedRequestQuestionnaireStatus": { + "type": "enum", + "members": { + "APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPROVED" + } + }, + "COMPLETE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "COMPLETE" + } + }, + "ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ERROR" + } + }, + "IN_PROGRESS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_PROGRESS" + } + }, + "IN_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "IN_REVIEW" + } + }, + "EXTRACTING_QUESTIONS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EXTRACTING_QUESTIONS" + } + }, + "QUEUED_FOR_EXTRACTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QUEUED_FOR_EXTRACTION" + } + }, + "PROCESSING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PROCESSING" + } + }, + "QUEUED_FOR_PROCESSING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QUEUED_FOR_PROCESSING" + } + }, + "READY_FOR_REVIEW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_REVIEW" + } + }, + "WAITING_ON_ANSWERS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WAITING_ON_ANSWERS" + } + }, + "WAITING_ON_COLUMN_SELECTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WAITING_ON_COLUMN_SELECTION" + } + }, + "WAITING_ON_COLUMN_APPROVAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WAITING_ON_COLUMN_APPROVAL" + } + }, + "QUEUED_FOR_COLUMN_DETECTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "QUEUED_FOR_COLUMN_DETECTION" + } + }, + "DETECTING_COLUMNS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DETECTING_COLUMNS" + } + }, + "ON_HOLD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ON_HOLD" + } + }, + "NO_LONGER_NEEDED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NO_LONGER_NEEDED" + } + } + }, + "traits": { + "smithy.api#documentation": "The new questionnaire status." + } + }, + "com.vanta.webhooks#V1QuestionnaireStatusChangedRequestQuestionnaire": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The questionnaire ID.", + "smithy.api#required": {} + } + }, + "status": { + "target": "com.vanta.webhooks#V1QuestionnaireStatusChangedRequestQuestionnaireStatus", + "traits": { + "smithy.api#documentation": "The new questionnaire status.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1QuestionnaireStatusChangedRequest": { + "type": "structure", + "members": { + "questionnaire": { + "target": "com.vanta.webhooks#V1QuestionnaireStatusChangedRequestQuestionnaire", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1QuestionnaireStatusChanged": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1QuestionnaireStatusChangedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.questionnaire.status-changed", + "code": 200 + }, + "smithy.api#documentation": "Questionnaire status changed\n\nA questionnaire status was changed." + } + }, + "com.vanta.webhooks#V1QuestionnaireExportCompletedRequestQuestionnaire": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the questionnaire.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1QuestionnaireExportCompletedRequestExportFormat": { + "type": "enum", + "members": { + "ORIGINAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "original" + } + }, + "CSV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "csv" + } + } + }, + "traits": { + "smithy.api#documentation": "The export format." + } + }, + "com.vanta.webhooks#V1QuestionnaireExportCompletedRequestExport": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the export job.", + "smithy.api#required": {} + } + }, + "format": { + "target": "com.vanta.webhooks#V1QuestionnaireExportCompletedRequestExportFormat", + "traits": { + "smithy.api#documentation": "The export format.", + "smithy.api#required": {} + } + }, + "requestedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the export was initiated (ISO 8601).", + "smithy.api#required": {} + } + }, + "completedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the export finished (ISO 8601).", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1QuestionnaireExportCompletedRequest": { + "type": "structure", + "members": { + "questionnaire": { + "target": "com.vanta.webhooks#V1QuestionnaireExportCompletedRequestQuestionnaire", + "traits": { + "smithy.api#required": {} + } + }, + "export": { + "target": "com.vanta.webhooks#V1QuestionnaireExportCompletedRequestExport", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1QuestionnaireExportCompleted": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1QuestionnaireExportCompletedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.questionnaire.export-completed", + "code": 200 + }, + "smithy.api#documentation": "Questionnaire export completed\n\nA questionnaire export has completed successfully." + } + }, + "com.vanta.webhooks#V1QuestionnaireExportFailedRequestQuestionnaire": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the questionnaire.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1QuestionnaireExportFailedRequestExportFormat": { + "type": "enum", + "members": { + "ORIGINAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "original" + } + }, + "CSV": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "csv" + } + } + }, + "traits": { + "smithy.api#documentation": "The export format." + } + }, + "com.vanta.webhooks#V1QuestionnaireExportFailedRequestExport": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the export job.", + "smithy.api#required": {} + } + }, + "format": { + "target": "com.vanta.webhooks#V1QuestionnaireExportFailedRequestExportFormat", + "traits": { + "smithy.api#documentation": "The export format.", + "smithy.api#required": {} + } + }, + "requestedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the export was initiated (ISO 8601).", + "smithy.api#required": {} + } + }, + "failedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the export failed (ISO 8601).", + "smithy.api#required": {} + } + }, + "reason": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The reason for the export failure.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1QuestionnaireExportFailedRequest": { + "type": "structure", + "members": { + "questionnaire": { + "target": "com.vanta.webhooks#V1QuestionnaireExportFailedRequestQuestionnaire", + "traits": { + "smithy.api#required": {} + } + }, + "export": { + "target": "com.vanta.webhooks#V1QuestionnaireExportFailedRequestExport", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1QuestionnaireExportFailed": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1QuestionnaireExportFailedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.questionnaire.export-failed", + "code": 200 + }, + "smithy.api#documentation": "Questionnaire export failed\n\nA questionnaire export has failed." + } + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestReceivedRequestTrustCenter": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Trust Center slug ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestReceivedRequestAccessRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The access request ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestReceivedRequest": { + "type": "structure", + "members": { + "trustCenter": { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestReceivedRequestTrustCenter", + "traits": { + "smithy.api#required": {} + } + }, + "accessRequest": { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestReceivedRequestAccessRequest", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestReceived": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestReceivedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.trust-center.access-request.received", + "code": 200 + }, + "smithy.api#documentation": "Trust Center access request received\n\nA Trust Center access request was received." + } + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestDeniedRequestTrustCenter": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Trust Center slug ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestDeniedRequestAccessRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The access request ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestDeniedRequest": { + "type": "structure", + "members": { + "trustCenter": { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestDeniedRequestTrustCenter", + "traits": { + "smithy.api#required": {} + } + }, + "accessRequest": { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestDeniedRequestAccessRequest", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestDenied": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestDeniedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.trust-center.access-request.denied", + "code": 200 + }, + "smithy.api#documentation": "Trust Center access request denied\n\nA Trust Center access request was denied." + } + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestApprovedRequestTrustCenter": { + "type": "structure", + "members": { + "slugId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The Trust Center slug ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestApprovedRequestAccessRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The access request ID.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestApprovedRequestViewer": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The viewer ID granted access.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestApprovedRequest": { + "type": "structure", + "members": { + "trustCenter": { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestApprovedRequestTrustCenter", + "traits": { + "smithy.api#required": {} + } + }, + "accessRequest": { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestApprovedRequestAccessRequest", + "traits": { + "smithy.api#required": {} + } + }, + "viewer": { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestApprovedRequestViewer", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1TrustCenterAccessRequestApproved": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestApprovedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.trust-center.access-request.approved", + "code": 200 + }, + "smithy.api#documentation": "Trust Center access request approved\n\nA Trust Center access request was approved." + } + }, + "com.vanta.webhooks#V1VendorDecisionCreatedRequestVendorDecisionStatus": { + "type": "enum", + "members": { + "APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "APPROVED" + } + }, + "CONDITIONALLY_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CONDITIONALLY_APPROVED" + } + }, + "NOT_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_APPROVED" + } + } + }, + "traits": { + "smithy.api#documentation": "The vendor decision status." + } + }, + "com.vanta.webhooks#V1VendorDecisionCreatedRequestVendorDecision": { + "type": "structure", + "members": { + "status": { + "target": "com.vanta.webhooks#V1VendorDecisionCreatedRequestVendorDecisionStatus", + "traits": { + "smithy.api#documentation": "The vendor decision status.", + "smithy.api#required": {} + } + }, + "lastUpdatedAt": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "When the decision was last updated (ISO 8601).", + "smithy.api#required": {} + } + }, + "comments": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "Optional comments on the decision." + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1VendorDecisionCreatedRequestVendor": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The vendor ID.", + "smithy.api#required": {} + } + }, + "decision": { + "target": "com.vanta.webhooks#V1VendorDecisionCreatedRequestVendorDecision", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1VendorDecisionCreatedRequest": { + "type": "structure", + "members": { + "vendor": { + "target": "com.vanta.webhooks#V1VendorDecisionCreatedRequestVendor", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1VendorDecisionCreated": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1VendorDecisionCreatedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.vendor.decision.created", + "code": 200 + }, + "smithy.api#documentation": "Vendor decision created\n\nA new vendor decision has been created." + } + }, + "com.vanta.webhooks#V1InformationRequestStatusChangedRequestInformationRequestOldStatus": { + "type": "enum", + "members": { + "NEEDS_EVIDENCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NEEDS_EVIDENCE" + } + }, + "READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_AUDIT" + } + }, + "AUDITOR_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDITOR_APPROVED" + } + }, + "AUDITOR_FLAGGED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDITOR_FLAGGED" + } + } + }, + "traits": { + "smithy.api#documentation": "The status the information request was in before the change." + } + }, + "com.vanta.webhooks#V1InformationRequestStatusChangedRequestInformationRequestNewStatus": { + "type": "enum", + "members": { + "NEEDS_EVIDENCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NEEDS_EVIDENCE" + } + }, + "READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_AUDIT" + } + }, + "AUDITOR_APPROVED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDITOR_APPROVED" + } + }, + "AUDITOR_FLAGGED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AUDITOR_FLAGGED" + } + } + }, + "traits": { + "smithy.api#documentation": "The status the information request is in after the change. A value of `READY_FOR_AUDIT` means the customer has submitted the request and it is ready for the auditor to review." + } + }, + "com.vanta.webhooks#V1InformationRequestStatusChangedRequestInformationRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the information request.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the information request belongs to.", + "smithy.api#required": {} + } + }, + "oldStatus": { + "target": "com.vanta.webhooks#V1InformationRequestStatusChangedRequestInformationRequestOldStatus", + "traits": { + "smithy.api#documentation": "The status the information request was in before the change.", + "smithy.api#required": {} + } + }, + "newStatus": { + "target": "com.vanta.webhooks#V1InformationRequestStatusChangedRequestInformationRequestNewStatus", + "traits": { + "smithy.api#documentation": "The status the information request is in after the change. A value of `READY_FOR_AUDIT` means the customer has submitted the request and it is ready for the auditor to review.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestStatusChangedRequest": { + "type": "structure", + "members": { + "informationRequest": { + "target": "com.vanta.webhooks#V1InformationRequestStatusChangedRequestInformationRequest", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1InformationRequestStatusChanged": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1InformationRequestStatusChangedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.information-request.status-changed", + "code": 200 + }, + "smithy.api#documentation": "Information request status changed\n\nFires when an information request's approval status changes. This is a status-change event.\n\n**Ready-to-review signal:** a `newStatus` of `READY_FOR_AUDIT` means the customer has submitted the information request and it is ready for the auditor to review.\n\n**When it fires:** once per information request, each time its status changes between the values below. Not every status transition emits an event.\n\n**Status values:**\n- `NEEDS_EVIDENCE` — the request still needs work from the customer; it is not yet ready for the auditor.\n- `READY_FOR_AUDIT` — the customer has submitted the request and it is ready for the auditor to review.\n- `AUDITOR_APPROVED` — the auditor reviewed the request and approved it.\n- `AUDITOR_FLAGGED` — the auditor flagged the request for the customer to address.\n\nA typical lifecycle is `NEEDS_EVIDENCE → READY_FOR_AUDIT → AUDITOR_APPROVED` (or `→ AUDITOR_FLAGGED`). A request can also move from `READY_FOR_AUDIT` back to `NEEDS_EVIDENCE` when the customer takes it back to continue working on it." + } + }, + "com.vanta.webhooks#V1InformationRequestCommentCreatedRequestInformationRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the information request.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the information request belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestCommentCreatedRequestComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the comment.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestCommentCreatedRequest": { + "type": "structure", + "members": { + "informationRequest": { + "target": "com.vanta.webhooks#V1InformationRequestCommentCreatedRequestInformationRequest", + "traits": { + "smithy.api#required": {} + } + }, + "comment": { + "target": "com.vanta.webhooks#V1InformationRequestCommentCreatedRequestComment", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1InformationRequestCommentCreated": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1InformationRequestCommentCreatedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.information-request.comment.created", + "code": 200 + }, + "smithy.api#documentation": "Information request comment created\n\nFires when a comment is created on an information request. Fires once per comment.\n\nThe payload contains only identifiers; fetch the comment body from the information request comments endpoint (`GET /v1/audits/{auditId}/information-requests/{requestId}/comments`)." + } + }, + "com.vanta.webhooks#V1InformationRequestCommentUpdatedRequestInformationRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the information request.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the information request belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestCommentUpdatedRequestComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the comment.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestCommentUpdatedRequest": { + "type": "structure", + "members": { + "informationRequest": { + "target": "com.vanta.webhooks#V1InformationRequestCommentUpdatedRequestInformationRequest", + "traits": { + "smithy.api#required": {} + } + }, + "comment": { + "target": "com.vanta.webhooks#V1InformationRequestCommentUpdatedRequestComment", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1InformationRequestCommentUpdated": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1InformationRequestCommentUpdatedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.information-request.comment.updated", + "code": 200 + }, + "smithy.api#documentation": "Information request comment updated\n\nFires when a comment on an information request is updated. Fires once per comment update.\n\nThe payload contains only identifiers; fetch the current comment body from the information request comments endpoint (`GET /v1/audits/{auditId}/information-requests/{requestId}/comments`)." + } + }, + "com.vanta.webhooks#V1InformationRequestCommentDeletedRequestInformationRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the information request.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the information request belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestCommentDeletedRequestComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the comment.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestCommentDeletedRequest": { + "type": "structure", + "members": { + "informationRequest": { + "target": "com.vanta.webhooks#V1InformationRequestCommentDeletedRequestInformationRequest", + "traits": { + "smithy.api#required": {} + } + }, + "comment": { + "target": "com.vanta.webhooks#V1InformationRequestCommentDeletedRequestComment", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1InformationRequestCommentDeleted": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1InformationRequestCommentDeletedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.information-request.comment.deleted", + "code": 200 + }, + "smithy.api#documentation": "Information request comment deleted\n\nFires when a comment is deleted from an information request. Fires once per comment deletion.\n\nThe payload contains only identifiers; the deleted comment is still returned by the information request comments endpoint (`GET /v1/audits/{auditId}/information-requests/{requestId}/comments`) as a soft-deleted record with a non-null `deletionDate`." + } + }, + "com.vanta.webhooks#V1InformationRequestEvidenceCreatedRequestInformationRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the information request.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the information request belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestEvidenceCreatedRequestEvidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the evidence.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestEvidenceCreatedRequest": { + "type": "structure", + "members": { + "informationRequest": { + "target": "com.vanta.webhooks#V1InformationRequestEvidenceCreatedRequestInformationRequest", + "traits": { + "smithy.api#required": {} + } + }, + "evidence": { + "target": "com.vanta.webhooks#V1InformationRequestEvidenceCreatedRequestEvidence", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1InformationRequestEvidenceCreated": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1InformationRequestEvidenceCreatedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.information-request.evidence.created", + "code": 200 + }, + "smithy.api#documentation": "Information request evidence created\n\nFires when a piece of evidence is added to an information request. Fires once per piece of evidence — if several pieces are added in a single action, you receive one event per piece.\n\nThese `v1.information-request.evidence.*` events belong to the Information Request experience and are unrelated to the `v1.evidence.*` classic audit evidence events." + } + }, + "com.vanta.webhooks#V1InformationRequestEvidenceDeletedRequestInformationRequest": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the information request.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the information request belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestEvidenceDeletedRequestEvidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the evidence.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1InformationRequestEvidenceDeletedRequest": { + "type": "structure", + "members": { + "informationRequest": { + "target": "com.vanta.webhooks#V1InformationRequestEvidenceDeletedRequestInformationRequest", + "traits": { + "smithy.api#required": {} + } + }, + "evidence": { + "target": "com.vanta.webhooks#V1InformationRequestEvidenceDeletedRequestEvidence", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1InformationRequestEvidenceDeleted": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1InformationRequestEvidenceDeletedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.information-request.evidence.deleted", + "code": 200 + }, + "smithy.api#documentation": "Information request evidence deleted\n\nFires when a piece of evidence is removed from an information request. Fires once per piece of evidence removed.\n\nThese `v1.information-request.evidence.*` events belong to the Information Request experience and are unrelated to the `v1.evidence.*` classic audit evidence events." + } + }, + "com.vanta.webhooks#V1EvidenceStatusChangedRequestEvidenceOldStatus": { + "type": "enum", + "members": { + "ACCEPTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCEPTED" + } + }, + "FLAGGED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FLAGGED" + } + }, + "INITIALIZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INITIALIZED" + } + }, + "NA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NA" + } + }, + "NOT_READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_READY_FOR_AUDIT" + } + }, + "READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_AUDIT" + } + } + }, + "traits": { + "smithy.api#documentation": "The status the evidence item was in before the change. `INITIALIZED` is an internal status and is never delivered." + } + }, + "com.vanta.webhooks#V1EvidenceStatusChangedRequestEvidenceNewStatus": { + "type": "enum", + "members": { + "ACCEPTED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ACCEPTED" + } + }, + "FLAGGED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FLAGGED" + } + }, + "INITIALIZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "INITIALIZED" + } + }, + "NA": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NA" + } + }, + "NOT_READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NOT_READY_FOR_AUDIT" + } + }, + "READY_FOR_AUDIT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "READY_FOR_AUDIT" + } + } + }, + "traits": { + "smithy.api#documentation": "The status the evidence item is in after the change. A value of `READY_FOR_AUDIT` means the customer has provided evidence for the item and it is ready for the auditor to review. `INITIALIZED` is an internal status and is never delivered." + } + }, + "com.vanta.webhooks#V1EvidenceStatusChangedRequestEvidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the evidence.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the evidence belongs to.", + "smithy.api#required": {} + } + }, + "oldStatus": { + "target": "com.vanta.webhooks#V1EvidenceStatusChangedRequestEvidenceOldStatus", + "traits": { + "smithy.api#documentation": "The status the evidence item was in before the change. `INITIALIZED` is an internal status and is never delivered.", + "smithy.api#required": {} + } + }, + "newStatus": { + "target": "com.vanta.webhooks#V1EvidenceStatusChangedRequestEvidenceNewStatus", + "traits": { + "smithy.api#documentation": "The status the evidence item is in after the change. A value of `READY_FOR_AUDIT` means the customer has provided evidence for the item and it is ready for the auditor to review. `INITIALIZED` is an internal status and is never delivered.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1EvidenceStatusChangedRequest": { + "type": "structure", + "members": { + "evidence": { + "target": "com.vanta.webhooks#V1EvidenceStatusChangedRequestEvidence", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1EvidenceStatusChanged": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1EvidenceStatusChangedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.evidence.status-changed", + "code": 200 + }, + "smithy.api#documentation": "Evidence status changed\n\nFires when an existing audit evidence item changes status. `oldStatus` and `newStatus` always describe a transition of an item that already exists. See [`v1.evidence.created`](/reference/webhooks/v1-evidence-created) for the event that fires when an item first comes into scope for an audit.\n\n**Ready-to-review signal:** a `newStatus` of `READY_FOR_AUDIT` means the customer has provided evidence for the item and it is ready for the auditor to review.\n\n**When it fires:** once per evidence item, each time its status changes. Status can also change on its own as the customer's compliance posture changes, so an item may move from `READY_FOR_AUDIT` back to `NOT_READY_FOR_AUDIT` without an explicit auditor action.\n\n`oldStatus` and `newStatus` can be equal. A newly detected document re-fires this event with both fields set to the item's current status (for example, `READY_FOR_AUDIT`, `ACCEPTED`, or `FLAGGED`). Treat that as a signal that the item's files may have changed and re-fetch its URLs. Do not discard events where the status is unchanged.\n\n**Status values:**\n- `NOT_READY_FOR_AUDIT` — the item is not yet ready for the auditor; required evidence is missing or does not meet the requirement.\n- `READY_FOR_AUDIT` — the customer has provided the evidence and it is ready for the auditor to review.\n- `ACCEPTED` — the auditor reviewed the item and accepted it.\n- `FLAGGED` — the auditor reviewed the item and flagged an issue for the customer to address; once the customer addresses it the item returns to `READY_FOR_AUDIT`.\n- `NA` — the item is not applicable to this audit.\n\nA typical lifecycle is `NOT_READY_FOR_AUDIT → READY_FOR_AUDIT → ACCEPTED` (or `→ FLAGGED`, which returns to `READY_FOR_AUDIT` once the customer addresses the issue). `INITIALIZED` is an internal status and is never delivered — `oldStatus` and `newStatus` are always one of the values above." + } + }, + "com.vanta.webhooks#V1EvidenceCommentCreatedRequestEvidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the evidence.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the evidence belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1EvidenceCommentCreatedRequestComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the comment.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1EvidenceCommentCreatedRequest": { + "type": "structure", + "members": { + "evidence": { + "target": "com.vanta.webhooks#V1EvidenceCommentCreatedRequestEvidence", + "traits": { + "smithy.api#required": {} + } + }, + "comment": { + "target": "com.vanta.webhooks#V1EvidenceCommentCreatedRequestComment", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1EvidenceCommentCreated": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1EvidenceCommentCreatedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.evidence.comment.created", + "code": 200 + }, + "smithy.api#documentation": "Evidence comment created\n\nFires when a comment is created on an audit evidence item. Fires once per comment." + } + }, + "com.vanta.webhooks#V1EvidenceCommentUpdatedRequestEvidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the evidence.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the evidence belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1EvidenceCommentUpdatedRequestComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the comment.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1EvidenceCommentUpdatedRequest": { + "type": "structure", + "members": { + "evidence": { + "target": "com.vanta.webhooks#V1EvidenceCommentUpdatedRequestEvidence", + "traits": { + "smithy.api#required": {} + } + }, + "comment": { + "target": "com.vanta.webhooks#V1EvidenceCommentUpdatedRequestComment", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1EvidenceCommentUpdated": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1EvidenceCommentUpdatedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.evidence.comment.updated", + "code": 200 + }, + "smithy.api#documentation": "Evidence comment updated\n\nFires when a comment on an audit evidence item is updated. Fires once per comment update." + } + }, + "com.vanta.webhooks#V1EvidenceCommentDeletedRequestEvidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the evidence.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the evidence belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1EvidenceCommentDeletedRequestComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the comment.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1EvidenceCommentDeletedRequest": { + "type": "structure", + "members": { + "evidence": { + "target": "com.vanta.webhooks#V1EvidenceCommentDeletedRequestEvidence", + "traits": { + "smithy.api#required": {} + } + }, + "comment": { + "target": "com.vanta.webhooks#V1EvidenceCommentDeletedRequestComment", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1EvidenceCommentDeleted": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1EvidenceCommentDeletedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.evidence.comment.deleted", + "code": 200 + }, + "smithy.api#documentation": "Evidence comment deleted\n\nFires when a comment is deleted from an audit evidence item. Fires once per comment deletion." + } + }, + "com.vanta.webhooks#V1EvidenceCreatedRequestEvidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the evidence.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the evidence belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The evidence item that came into scope for the audit." + } + }, + "com.vanta.webhooks#V1EvidenceCreatedRequest": { + "type": "structure", + "members": { + "evidence": { + "target": "com.vanta.webhooks#V1EvidenceCreatedRequestEvidence", + "traits": { + "smithy.api#documentation": "The evidence item that came into scope for the audit.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1EvidenceCreated": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1EvidenceCreatedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.evidence.created", + "code": 200 + }, + "smithy.api#documentation": "Evidence created\n\nFires when an audit evidence item comes into scope for an audit, including when a previously removed item re-enters scope after soft-delete.\n\nEvidence items are derived from the customer's compliance program, so this event means \"a new item is now in scope for this audit\", not \"a customer uploaded a file\". A brand-new item starts in `NOT_READY_FOR_AUDIT` with no files; wait for [`v1.evidence.status-changed`](/reference/webhooks/v1-evidence-status-changed) before requesting URLs. A re-scoped item retains its previous status and files. It may already be in `READY_FOR_AUDIT` or another state, and no follow-up status-change event is guaranteed.\n\n**This event does not replace the initial sync.** Items can come into scope from the moment the audit exists, which is normally before your access to the audit begins, and events from before that point are not delivered or replayed. Always perform a full traversal of `GET /audits/{auditId}/evidence` when you first pick up an audit, then rely on this event for items that come into scope afterwards." + } + }, + "com.vanta.webhooks#V1EvidenceDeletedRequestEvidence": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the evidence.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the evidence belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "The evidence item that left scope for the audit." + } + }, + "com.vanta.webhooks#V1EvidenceDeletedRequest": { + "type": "structure", + "members": { + "evidence": { + "target": "com.vanta.webhooks#V1EvidenceDeletedRequestEvidence", + "traits": { + "smithy.api#documentation": "The evidence item that left scope for the audit.", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1EvidenceDeleted": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1EvidenceDeletedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.evidence.deleted", + "code": 200 + }, + "smithy.api#documentation": "Evidence deleted\n\nFires when an audit evidence item leaves scope for an audit. Fires once per item.\n\nThe item is soft-deleted rather than removed: `GET /audits/{auditId}/evidence` still returns it, with a non-null `deletionDate`. Stop requesting URLs for the item. If the item later returns to scope, Vanta emits a fresh [`v1.evidence.created`](/reference/webhooks/v1-evidence-created) event and clears `deletionDate`." + } + }, + "com.vanta.webhooks#V1ControlCommentCreatedRequestControl": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the control the comment was added to.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the control belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1ControlCommentCreatedRequestComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the comment.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1ControlCommentCreatedRequest": { + "type": "structure", + "members": { + "control": { + "target": "com.vanta.webhooks#V1ControlCommentCreatedRequestControl", + "traits": { + "smithy.api#required": {} + } + }, + "comment": { + "target": "com.vanta.webhooks#V1ControlCommentCreatedRequestComment", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1ControlCommentCreated": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1ControlCommentCreatedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.control.comment.created", + "code": 200 + }, + "smithy.api#documentation": "Control comment created\n\nAn external comment was created on an audit control. Fires once per comment.\n\nThis event is delivered only to [Audit Partner](/reference/audits/overview) accounts and is gated by the early-access `audit_control_comment_webhook` feature — reach out to your Vanta contact to enable it.\n\nThe payload contains only identifiers. Fetch the comment body from `GET /v1/audits/{auditId}/controls/{controlId}/comments`." + } + }, + "com.vanta.webhooks#V1ControlCommentUpdatedRequestControl": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the control the comment belongs to.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the control belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1ControlCommentUpdatedRequestComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the comment.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1ControlCommentUpdatedRequest": { + "type": "structure", + "members": { + "control": { + "target": "com.vanta.webhooks#V1ControlCommentUpdatedRequestControl", + "traits": { + "smithy.api#required": {} + } + }, + "comment": { + "target": "com.vanta.webhooks#V1ControlCommentUpdatedRequestComment", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1ControlCommentUpdated": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1ControlCommentUpdatedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.control.comment.updated", + "code": 200 + }, + "smithy.api#documentation": "Control comment updated\n\nAn external comment on an audit control was updated. Fires once per comment update.\n\nThis event is delivered only to [Audit Partner](/reference/audits/overview) accounts and is gated by the early-access `audit_control_comment_webhook` feature — reach out to your Vanta contact to enable it.\n\nThe payload contains only identifiers. Fetch the current comment body from `GET /v1/audits/{auditId}/controls/{controlId}/comments`." + } + }, + "com.vanta.webhooks#V1ControlCommentDeletedRequestControl": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the control the comment was deleted from.", + "smithy.api#required": {} + } + }, + "auditId": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the audit the control belongs to.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1ControlCommentDeletedRequestComment": { + "type": "structure", + "members": { + "id": { + "target": "smithy.api#String", + "traits": { + "smithy.api#documentation": "The unique identifier of the comment.", + "smithy.api#required": {} + } + } + }, + "traits": {} + }, + "com.vanta.webhooks#V1ControlCommentDeletedRequest": { + "type": "structure", + "members": { + "control": { + "target": "com.vanta.webhooks#V1ControlCommentDeletedRequestControl", + "traits": { + "smithy.api#required": {} + } + }, + "comment": { + "target": "com.vanta.webhooks#V1ControlCommentDeletedRequestComment", + "traits": { + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.vanta.webhooks#V1ControlCommentDeleted": { + "type": "operation", + "input": { + "target": "com.vanta.webhooks#V1ControlCommentDeletedRequest" + }, + "output": { + "target": "smithy.api#Unit" + }, + "traits": { + "smithy.api#http": { + "method": "POST", + "uri": "/v1.control.comment.deleted", + "code": 200 + }, + "smithy.api#documentation": "Control comment deleted\n\nAn external comment was deleted from an audit control. Fires once per comment deletion.\n\nThis event is delivered only to [Audit Partner](/reference/audits/overview) accounts and is gated by the early-access `audit_control_comment_webhook` feature — reach out to your Vanta contact to enable it.\n\nThe payload contains only identifiers. The deleted comment no longer appears in `GET /v1/audits/{auditId}/controls/{controlId}/comments`." + } + }, + "com.vanta.webhooks#Webhooks": { + "type": "service", + "version": "1.0.0", + "operations": [ + { + "target": "com.vanta.webhooks#V1QuestionnaireCreated" + }, + { + "target": "com.vanta.webhooks#V1QuestionnaireDeleted" + }, + { + "target": "com.vanta.webhooks#V1QuestionnaireStatusChanged" + }, + { + "target": "com.vanta.webhooks#V1QuestionnaireExportCompleted" + }, + { + "target": "com.vanta.webhooks#V1QuestionnaireExportFailed" + }, + { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestReceived" + }, + { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestDenied" + }, + { + "target": "com.vanta.webhooks#V1TrustCenterAccessRequestApproved" + }, + { + "target": "com.vanta.webhooks#V1VendorDecisionCreated" + }, + { + "target": "com.vanta.webhooks#V1InformationRequestStatusChanged" + }, + { + "target": "com.vanta.webhooks#V1InformationRequestCommentCreated" + }, + { + "target": "com.vanta.webhooks#V1InformationRequestCommentUpdated" + }, + { + "target": "com.vanta.webhooks#V1InformationRequestCommentDeleted" + }, + { + "target": "com.vanta.webhooks#V1InformationRequestEvidenceCreated" + }, + { + "target": "com.vanta.webhooks#V1InformationRequestEvidenceDeleted" + }, + { + "target": "com.vanta.webhooks#V1EvidenceStatusChanged" + }, + { + "target": "com.vanta.webhooks#V1EvidenceCommentCreated" + }, + { + "target": "com.vanta.webhooks#V1EvidenceCommentUpdated" + }, + { + "target": "com.vanta.webhooks#V1EvidenceCommentDeleted" + }, + { + "target": "com.vanta.webhooks#V1EvidenceCreated" + }, + { + "target": "com.vanta.webhooks#V1EvidenceDeleted" + }, + { + "target": "com.vanta.webhooks#V1ControlCommentCreated" + }, + { + "target": "com.vanta.webhooks#V1ControlCommentUpdated" + }, + { + "target": "com.vanta.webhooks#V1ControlCommentDeleted" + } + ], + "traits": { + "smithy.api#title": "Vanta Webhook Events", + "smithy.api#documentation": "Reference for the events Vanta delivers to your registered webhook endpoints. Each operation documents a single event type, its payload schema, and an example body.\n\nThese operations describe **events Vanta sends to you** — they are not endpoints you call. The documented schema is the event `payload`. Every delivery also includes signature headers and is wrapped in a delivery envelope. See the [Webhooks guide](/docs/webhooks) for setup, signature verification, and retries." + } + } + } +} diff --git a/packages/vanta/package.json b/packages/vanta/package.json new file mode 100644 index 000000000..4e28f2f2a --- /dev/null +++ b/packages/vanta/package.json @@ -0,0 +1,85 @@ +{ + "name": "@distilled.cloud/vanta", + "version": "1.0.0-rc.8", + "repository": { + "type": "git", + "url": "https://github.com/alchemy-run/distilled", + "directory": "packages/vanta" + }, + "license": "Apache-2.0", + "type": "module", + "sideEffects": false, + "files": [ + "lib", + "src" + ], + "exports": { + ".": { + "types": "./lib/index.d.ts", + "bun": "./src/index.ts", + "worker": "./src/index.ts", + "default": "./lib/index.js" + }, + "./Credentials": { + "types": "./lib/credentials.d.ts", + "bun": "./src/credentials.ts", + "worker": "./src/credentials.ts", + "default": "./lib/credentials.js" + }, + "./Errors": { + "types": "./lib/errors.d.ts", + "bun": "./src/errors.ts", + "worker": "./src/errors.ts", + "default": "./lib/errors.js" + }, + "./Traits": { + "types": "./lib/traits.d.ts", + "bun": "./src/traits.ts", + "worker": "./src/traits.ts", + "default": "./lib/traits.js" + }, + "./Pagination": { + "types": "./lib/pagination.d.ts", + "bun": "./src/pagination.ts", + "worker": "./src/pagination.ts", + "default": "./lib/pagination.js" + }, + "./Protocol": { + "types": "./lib/protocol.d.ts", + "bun": "./src/protocol.ts", + "worker": "./src/protocol.ts", + "default": "./lib/protocol.js" + }, + "./Retry": { + "types": "./lib/retry.d.ts", + "bun": "./src/retry.ts", + "worker": "./src/retry.ts", + "default": "./lib/retry.js" + }, + "./*": { + "types": "./lib/services/*.d.ts", + "bun": "./src/services/*.ts", + "worker": "./src/services/*.ts", + "default": "./lib/services/*.js" + } + }, + "scripts": { + "build": "tsc -b", + "convert": "bun scripts/convert.ts", + "generate": "bun scripts/convert.ts && bun scripts/generate.ts", + "typecheck": "tsc -p tsconfig.json", + "specs:fetch": "git submodule update --force --init --depth=1 specs/spec-mirror-vanta", + "specs:update": "git submodule update --remote --force --depth=1 specs/spec-mirror-vanta" + }, + "dependencies": { + "@distilled.cloud/core": "workspace:*" + }, + "devDependencies": { + "@types/bun": "catalog:tooling", + "@types/node": "catalog:tooling", + "@effect/platform-bun": "catalog:effect" + }, + "peerDependencies": { + "effect": "catalog:effect" + } +} diff --git a/packages/vanta/scripts/convert.ts b/packages/vanta/scripts/convert.ts new file mode 100644 index 000000000..7b4dac3bf --- /dev/null +++ b/packages/vanta/scripts/convert.ts @@ -0,0 +1,62 @@ +#!/usr/bin/env bun +/** + * convert — turn Vanta's OpenAPI specs into Smithy 2.0 JSON models. + * + * Input: specs/spec-mirror-vanta/specs/.json (spec submodule) + * patches//*.patch.json (RFC-6902 patches to the OpenAPI + * document) + * Output: .generated-specs/.json (one model per spec file) + * + * Vanta publishes four OpenAPI 3.0 documents on developer.vanta.com — Manage + * Vanta, Auditor API, Build Integrations, and inbound webhook events. Each + * file becomes one service module. `scripts/generate.ts` compiles the models + * into src/services. + */ +import * as path from "node:path"; +import { runOpenApiConvert } from "@distilled.cloud/core/codegen/openapi-cli"; + +const root = path.resolve(import.meta.dir, ".."); + +const SPEC_FILES = [ + "manage-vanta.json", + "auditor-api.json", + "build-integrations.json", + "webhooks.json", +] as const; + +const toSlug = (file: string): string => + file + .replace(/\.json$/, "") + .replace(/[^a-zA-Z0-9]+/g, "_") + .replace(/^_+|_+$/g, "") + .toLowerCase(); + +const toPascal = (slug: string): string => + slug + .split("_") + .filter(Boolean) + .map((s) => s.charAt(0).toUpperCase() + s.slice(1)) + .join(""); + +await runOpenApiConvert({ + root, + specs: SPEC_FILES.map((file) => { + const slug = toSlug(file); + return { + name: slug, + specPath: `specs/spec-mirror-vanta/specs/${file}`, + options: { + namespace: `com.vanta.${slug}`, + serviceName: toPascal(slug), + }, + }; + }), + // OpenAPI-document patches: patches//*.patch.json. The smithy-model + // patch chain in generate.ts is disabled (`patchesDir: false`). + patchesDir: "patches", + options: { + namespace: "com.vanta.api", + serviceName: "Vanta", + skipDeprecated: true, + }, +}); diff --git a/packages/vanta/scripts/generate.ts b/packages/vanta/scripts/generate.ts new file mode 100644 index 000000000..8ff0454c4 --- /dev/null +++ b/packages/vanta/scripts/generate.ts @@ -0,0 +1,103 @@ +#!/usr/bin/env bun +/** + * generate — turn the Smithy JSON models in .generated-specs into the Vanta + * Effect SDK. + * + * Input: .generated-specs/.json (one model per OpenAPI file, written + * by scripts/convert.ts) + * Output: src/services/.ts + src/services/index.ts + * + * The smithy→SDK compiler and CLI pipeline live in + * `@distilled.cloud/core/codegen`; this script is Vanta's provider spec. + * Vanta keeps the wire's camelCase member names on the TS surface, so no + * member renaming or wire dictionaries appear here. + */ +import type { SdkSpec } from "@distilled.cloud/core/codegen/generator"; +import { runGeneratorCli } from "@distilled.cloud/core/codegen/cli"; + +const NULLABLE_TRAIT = "com.distilled.openapi#nullable"; +const ERROR_MATCHERS_TRAIT = "com.distilled.openapi#errorMatchers"; +const RAW_RESPONSE_TRAIT = "com.distilled.openapi#rawResponse"; +const SENSITIVE_TRAIT = "smithy.api#sensitive"; + +/** `manage_vanta` → `manageVanta` (the barrel's export name). */ +const camel = (slug: string): string => + slug + .split("_") + .filter(Boolean) + .map((s, i) => (i === 0 ? s : s.charAt(0).toUpperCase() + s.slice(1))) + .join(""); + +/** Vanta's provider spec for the shared smithy→SDK compiler. */ +const vantaSpec: SdkSpec = { + nullableTrait: NULLABLE_TRAIT, + errorMatchersTrait: ERROR_MATCHERS_TRAIT, + + extraBindings: [ + { + // Sole member of a synthesized wrapper for bare array/scalar response + // bodies; as the response's only member, the response IS the payload. + trait: RAW_RESPONSE_TRAIT, + binding: "rawResponse", + pipe: "T.RawResponse()", + rootPipe: "T.RawResponseRoot()", + }, + ], + + // Sensitive strings (tokens, secrets): the schema member carries + // T.SensitiveValue; the REST protocol delivers Redacted values and + // accepts string | Redacted on input. + memberTraitPipes: { + [SENSITIVE_TRAIT]: "T.SensitiveValue", + }, + memberTsType: (m) => + SENSITIVE_TRAIT in m.traits + ? `string | Redacted.Redacted${m.nullable ? " | null" : ""}` + : undefined, + + // Unions surface as TS type unions over an opaque schema — the REST + // protocol passes union content through verbatim (wire names ARE the TS + // names for Vanta), so no runtime case discrimination is needed. + union: ({ name, caseTargets, tsRef }) => [ + `export type ${name} = ${caseTargets.map(tsRef).join(" | ") || "unknown"};`, + `export const ${name} = /*@__PURE__*/ S.Unknown as any as S.Schema<${name}>;\n`, + ], + + // Cursor-style lists (pageCursor + results.pageInfo.endCursor) use core's + // paginateCursor when the converter stamps smithy.api#paginated. + paginationProfiles: { + cursor: { + strategy: "paginateCursor", + itemsFallback: "results.data", + }, + }, + + operationDecl: { + contextType: "VantaOpContext", + commonErrorType: "VantaOpError", + commonErrorClasses: ["UnknownVantaError"], + protocol: "VantaProtocol", + retry: "Retry.Retry", + }, + + sourceNote: ".generated-specs (specs/spec-mirror-vanta)", + + // Sensitive member types reference Redacted; pull the import in when used. + postProcess: (code) => + code.includes("Redacted.Redacted<") + ? code.replace( + `import * as S from "@distilled.cloud/core/schema";\n`, + `import * as S from "@distilled.cloud/core/schema";\nimport * as Redacted from "effect/Redacted";\n`, + ) + : code, +}; + +runGeneratorCli({ + description: "Generate the Vanta Effect SDK from the Smithy models", + root: `${import.meta.dir}/..`, + // patches/ holds OpenAPI-document patches consumed by scripts/convert.ts; + // there is no smithy-model patch chain. + patchesDir: false, + barrelExportName: camel, + spec: () => vantaSpec, +}); diff --git a/packages/vanta/src/credentials.ts b/packages/vanta/src/credentials.ts new file mode 100644 index 000000000..18d5fffd6 --- /dev/null +++ b/packages/vanta/src/credentials.ts @@ -0,0 +1,62 @@ +/** + * Vanta credentials — hand-written. + * + * The `Credentials` service holds an *effect* that resolves the current + * credentials on every request (the protocol layer resolves it per request + * on the calling fiber). Vanta authenticates with OAuth 2.0 bearer tokens: + * callers hand an already-fetched access token; the protocol sends it as + * `Authorization: Bearer `. + */ +import * as Context from "effect/Context"; +import * as Effect from "effect/Effect"; +import * as Layer from "effect/Layer"; +import * as Redacted from "effect/Redacted"; +import { ConfigError } from "@distilled.cloud/core/errors"; + +/** Vanta commercial API root. Use {@link GOV_API_BASE_URL} for Vanta Gov. */ +export const DEFAULT_API_BASE_URL = "https://api.vanta.com"; + +/** Vanta Gov (FedRAMP) API root. */ +export const GOV_API_BASE_URL = "https://api.vanta-gov.com"; + +export interface Config { + readonly apiKey: Redacted.Redacted; + readonly apiBaseUrl: string; +} + +export class Credentials extends Context.Service< + Credentials, + Effect.Effect +>()("VantaCredentials") {} + +/** Layer from a plain access token + optional base URL. */ +export const fromApiKey = (config: { + readonly apiKey: string; + readonly apiBaseUrl?: string; +}): Layer.Layer => + Layer.succeed( + Credentials, + Effect.succeed({ + apiKey: Redacted.make(config.apiKey), + apiBaseUrl: config.apiBaseUrl ?? DEFAULT_API_BASE_URL, + }), + ); + +/** Reads VANTA_ACCESS_TOKEN (required) and VANTA_API_BASE_URL (optional). */ +export const CredentialsFromEnv: Layer.Layer = Layer.succeed( + Credentials, + Effect.gen(function* () { + const apiKey = process.env.VANTA_ACCESS_TOKEN; + + if (!apiKey) { + return yield* new ConfigError({ + message: "VANTA_ACCESS_TOKEN environment variable is required", + }); + } + + return { + apiKey: Redacted.make(apiKey), + apiBaseUrl: process.env.VANTA_API_BASE_URL ?? DEFAULT_API_BASE_URL, + }; + }).pipe(Effect.orDie), +); diff --git a/packages/vanta/src/errors.ts b/packages/vanta/src/errors.ts new file mode 100644 index 000000000..28ed8afbc --- /dev/null +++ b/packages/vanta/src/errors.ts @@ -0,0 +1,50 @@ +/** + * Vanta-specific error types. + * + * Re-exports the common HTTP errors from core and adds the Vanta fallback + * errors. Note the generated service modules additionally define their own + * per-status matcher classes (BadRequest/NotFound/…) for the statuses each + * operation declares — those share `_tag`s with the core classes here, so + * `catchTag` works against either. + */ +export { + BadGateway, + BadRequest, + Conflict, + ConfigError, + Forbidden, + GatewayTimeout, + InternalServerError, + Locked, + NotFound, + ServiceUnavailable, + TooManyRequests, + Unauthorized, + UnprocessableEntity, + HTTP_STATUS_MAP, + DEFAULT_ERRORS, + API_ERRORS, +} from "@distilled.cloud/core/errors"; +export type { DefaultErrors } from "@distilled.cloud/core/errors"; + +import * as Schema from "effect/Schema"; +import * as Category from "@distilled.cloud/core/category"; + +/** Unknown Vanta error — returned when nothing else matches the failure. */ +export class UnknownVantaError extends Schema.TaggedError()( + "UnknownVantaError", + { + code: Schema.optional(Schema.String), + message: Schema.optional(Schema.String), + body: Schema.Unknown, + }, +).pipe(Category.withServerError) {} + +/** Schema parse error wrapper. */ +export class VantaParseError extends Schema.TaggedError()( + "VantaParseError", + { + body: Schema.Unknown, + cause: Schema.Unknown, + }, +).pipe(Category.withParseError) {} diff --git a/packages/vanta/src/index.ts b/packages/vanta/src/index.ts new file mode 100644 index 000000000..b4c2456fa --- /dev/null +++ b/packages/vanta/src/index.ts @@ -0,0 +1,25 @@ +/** + * @distilled.cloud/vanta — Vanta SDK for Effect. + * + * `./services` is generated by `scripts/generate.ts` from the Smithy models + * in `.generated-specs` (written by `scripts/convert.ts` from the OpenAPI + * specs). Everything else in this folder is hand-written. + * + * @example + * ```ts + * import * as Vanta from "@distilled.cloud/vanta"; + * + * const frameworks = yield* Vanta.Services.manageVanta.listComplianceFrameworks({}); + * ``` + */ +export * from "./credentials.ts"; +export * from "./errors.ts"; +export * as T from "./traits.ts"; +export { + VantaProtocol, + type VantaOpError, + type VantaOpContext, +} from "./protocol.ts"; +export { paginateCursor } from "./pagination.ts"; +export * as Retry from "./retry.ts"; +export * as Services from "./services/index.ts"; diff --git a/packages/vanta/src/pagination.ts b/packages/vanta/src/pagination.ts new file mode 100644 index 000000000..0f7ab51f8 --- /dev/null +++ b/packages/vanta/src/pagination.ts @@ -0,0 +1,7 @@ +/** + * Vanta pagination — hand-written. + * + * Generated operations that the converter stamps as cursor-paginated pass + * core's {@link paginateCursor} strategy to `API.makePaginated`. + */ +export { paginateCursor } from "@distilled.cloud/core/pagination"; diff --git a/packages/vanta/src/protocol.ts b/packages/vanta/src/protocol.ts new file mode 100644 index 000000000..5ec476798 --- /dev/null +++ b/packages/vanta/src/protocol.ts @@ -0,0 +1,67 @@ +/** + * VantaProtocol — hand-written. + * + * Vanta speaks bearer-authenticated JSON REST (no response envelope), so the + * whole protocol is one `makeRestProtocol` call from `core/protocol-rest`: + * + * request: credentials → `Authorization: Bearer ` + base URL + * (default https://api.vanta.com), resolved from the calling + * fiber on every request + * + * response: 2xx JSON is the payload (sensitive members delivered as + * `Redacted`); non-2xx `{ code?, message }` bodies map to the + * operation's typed error classes by status, then the shared + * HTTP-status classes, then {@link UnknownVantaError}. + */ +import * as Effect from "effect/Effect"; +import type * as Layer from "effect/Layer"; +import * as Redacted from "effect/Redacted"; +import type * as HttpClient from "effect/unstable/http/HttpClient"; +import type * as HttpClientError from "effect/unstable/http/HttpClientError"; +import type * as API from "@distilled.cloud/core/api"; +import { makeRestProtocol } from "@distilled.cloud/core/protocol-rest"; +import type { API_ERRORS, ConfigError } from "@distilled.cloud/core/errors"; +import { Credentials, type Config } from "./credentials.ts"; +import { UnknownVantaError } from "./errors.ts"; + +/** + * Error channel shared by every generated Vanta operation. Generated service + * files annotate operations with `API.OperationMethod` explicitly so the compiler never infers these back out of + * the schema generics. + */ +export type VantaOpError = + | InstanceType<(typeof API_ERRORS)[number]> + | UnknownVantaError + | ConfigError + | HttpClientError.HttpClientError; + +/** Context (requirements) shared by every generated Vanta operation. */ +export type VantaOpContext = Credentials | HttpClient.HttpClient; + +export const VantaProtocol: Layer.Layer = + makeRestProtocol({ + // The Credentials service holds an effect — resolving it here (per + // request, on the calling fiber) picks up context-provided credentials. + credentials: Effect.gen(function* () { + const resolve = yield* Credentials; + return yield* resolve; + }), + baseUrl: (creds) => creds.apiBaseUrl, + headers: (creds) => ({ + Authorization: `Bearer ${Redacted.value(creds.apiKey)}`, + }), + // Vanta's error body is `{ code?: string, message?: string }` — the + // factory's default lenient envelope covers it. + unknownError: ({ code, message, body }) => + new UnknownVantaError({ + code: + typeof code === "string" + ? code + : code !== undefined + ? String(code) + : undefined, + message, + body, + }), + }); diff --git a/packages/vanta/src/retry.ts b/packages/vanta/src/retry.ts new file mode 100644 index 000000000..aba18de1e --- /dev/null +++ b/packages/vanta/src/retry.ts @@ -0,0 +1,54 @@ +/** + * Vanta retry configuration. + * + * Defines the per-SDK `Retry` Context.Service tag that generated operations + * wire into `API.make`. Callers can install a blanket retry policy at the + * layer level and have every Vanta API call below it pick it up: + * + * @example + * ```ts + * import * as Vanta from "@distilled.cloud/vanta"; + * + * myEffect.pipe(Vanta.Retry.transient); + * Effect.provide(myEffect, Layer.succeed(Vanta.Retry.Retry, customPolicy)); + * ``` + */ +import * as Context from "effect/Context"; +import * as Effect from "effect/Effect"; +import * as Layer from "effect/Layer"; +import { + type Policy, + throttlingFactory, + transientFactory, +} from "@distilled.cloud/core/retry"; + +export { + type Options, + type Factory, + type Policy, + makeDefault, + jittered, + capped, + throttlingOptions, + transientOptions, + throttlingFactory, + transientFactory, +} from "@distilled.cloud/core/retry"; + +/** Context tag for configuring retry behavior of Vanta API calls. */ +export class Retry extends Context.Service()("VantaRetry") {} + +/** Provides a custom retry policy to every Vanta API call below it. */ +export const policy = (optionsOrFactory: Policy) => + Effect.provide(Layer.succeed(Retry, optionsOrFactory)); + +/** Disables all automatic retries. */ +export const none = Effect.provide( + Layer.succeed(Retry, { while: () => false }), +); + +/** Apply the throttling retry policy (retries throttling errors indefinitely). */ +export const throttling = policy(throttlingFactory); + +/** Apply the transient retry policy (retries all transient errors indefinitely). */ +export const transient = policy(transientFactory); diff --git a/packages/vanta/src/services/auditor_api.ts b/packages/vanta/src/services/auditor_api.ts new file mode 100644 index 000000000..b0fa5234b --- /dev/null +++ b/packages/vanta/src/services/auditor_api.ts @@ -0,0 +1,5479 @@ +// AUTO-GENERATED by scripts/generate.ts from .generated-specs (specs/spec-mirror-vanta). Do not edit. +import * as S from "@distilled.cloud/core/schema"; +import * as API from "@distilled.cloud/core/api"; +import * as T from "../traits.ts"; +import { + VantaProtocol, + type VantaOpError, + type VantaOpContext, +} from "../protocol.ts"; +import { UnknownVantaError } from "../errors.ts"; +import * as Retry from "../retry.ts"; + +export type { VantaOpError, VantaOpContext }; + +export interface AcceptInformationRequestEvidenceRequest { + auditId: string; + requestId: string; + /** Email of the auditor accepting the evidence. Must match an existing Vanta user who belongs to the audit firm making the API request. */ + auditorEmail: string; +} +export const AcceptInformationRequestEvidenceRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + auditorEmail: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/audits/{auditId}/information-requests/{requestId}/accept-evidence", + code: 200, + }), + ), +).annotate({ + identifier: "AcceptInformationRequestEvidenceRequest", +}) as any as S.Schema; + +/** Additional control IDs beyond those automatically mapped from framework codes. Allows manual association with specific controls when automatic mapping is insufficient. Each ID should reference a valid control in your audit framework. */ +export type InformationRequestAdditionalControlIdsList = Array; +export const InformationRequestAdditionalControlIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Current approval status of the information request, tracking its lifecycle through the audit process. The status progresses through the workflow: initial state → awaiting review → approved or flagged. Status can move between awaiting review and flagged states as evidence is reviewed and resubmitted. */ +export type InformationRequestApprovalStatus = + | "NEEDS_EVIDENCE" + | "READY_FOR_AUDIT" + | "AUDITOR_APPROVED" + | "AUDITOR_FLAGGED"; +export const InformationRequestApprovalStatus = /*@__PURE__*/ S.String; + +/** Frequency cadence for the information request, indicating how often it recurs. */ +export type InformationRequestCadence = + | "ANNUALLY" + | "BIANNUALLY" + | "MONTHLY" + | "QUARTERLY"; +export const InformationRequestCadence = /*@__PURE__*/ S.String; + +/** The framework codes this request addresses. Links the request to specific compliance requirements. Can be an empty array if no framework codes are associated. These codes correspond to standards like SOC 2, ISO 27001, etc. */ +export type InformationRequestFrameworkCodesList = Array; +export const InformationRequestFrameworkCodesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Type of information request, defining what scope of evidence is needed. - POINT_IN_TIME: Evidence for a specific moment (e.g., current state of a policy) - POPULATION: Evidence covering all items in a category (e.g., all employees) - SAMPLE: Evidence for a representative sample (e.g., 10 random customer records) */ +export type InformationRequestType = "POINT_IN_TIME" | "POPULATION" | "SAMPLE"; +export const InformationRequestType = /*@__PURE__*/ S.String; + +export type ResourceOwnerCase0Type = "user"; +export const ResourceOwnerCase0Type = /*@__PURE__*/ S.String; + +export interface ResourceOwnerCase0 { + displayName: string; + id: string; + type: ResourceOwnerCase0Type; +} +export const ResourceOwnerCase0 = /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + id: S.String, + type: ResourceOwnerCase0Type, + }), +).annotate({ + identifier: "ResourceOwnerCase0", +}) as any as S.Schema; + +export type ResourceOwnerCase1Type = "team"; +export const ResourceOwnerCase1Type = /*@__PURE__*/ S.String; + +export interface ResourceOwnerCase1 { + displayName: string; + id: string; + type: ResourceOwnerCase1Type; +} +export const ResourceOwnerCase1 = /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + id: S.String, + type: ResourceOwnerCase1Type, + }), +).annotate({ + identifier: "ResourceOwnerCase1", +}) as any as S.Schema; + +/** Represents either a user or a team owning a resource. */ +export type ResourceOwner = ResourceOwnerCase0 | ResourceOwnerCase1; +export const ResourceOwner = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +/** Information Request resource representing a single request for audit evidence from a customer. An information request is created by an auditor and shared with the customer organization. The customer then uploads evidence, which the auditor reviews and either approves or flags for issues. */ +export interface InformationRequest { + /** The unique identifier for the information request within Vanta's system. This is the primary identifier used in all API endpoints. Format: ObjectId as a string (e.g., "6890e473dce1da5d8406f5e7") */ + id: string; + /** External unique ID to prevent duplicates across different audit systems. Used for idempotency when syncing data between external audit management systems and Vanta. Unlike `id`, this value is provided by the external system. */ + uniqueId: string; + /** Additional control IDs beyond those automatically mapped from framework codes. Allows manual association with specific controls when automatic mapping is insufficient. Each ID should reference a valid control in your audit framework. */ + additionalControlIds: InformationRequestAdditionalControlIdsList; + /** Current approval status tracking the request's lifecycle through evidence submission and auditor review. */ + approvalStatus: InformationRequestApprovalStatus; + /** How frequently this information request recurs (e.g., annual password policy reviews). Null for one-time requests. */ + cadence: InformationRequestCadence | null; + /** The framework codes this request addresses. Links the request to specific compliance requirements. Can be an empty array if no framework codes are associated. These codes correspond to standards like SOC 2, ISO 27001, etc. */ + frameworkCodes: InformationRequestFrameworkCodesList; + /** Detailed description explaining what evidence is needed and why. Should provide clear instructions to help the customer understand what to submit. */ + description: string | null; + /** The deadline by which the customer must fulfill this request. Null if no specific deadline is set. Format: ISO 8601 UTC timestamp. */ + dueDate: string | null; + /** The earliest date for which evidence should be captured. Evidence dated before this date may not be accepted. Null if not restricted. Format: ISO 8601 UTC timestamp. */ + evidenceCaptureDate: string | null; + /** Non-unique external reference ID for this request. Unlike `uniqueId` which must be unique, `requestId` is for display/reference purposes only (e.g., "REQ-123"). Null if not provided. */ + requestId: string | null; + /** Defines the scope of evidence required. */ + requestType: InformationRequestType; + /** Short, descriptive title summarizing what is being requested. */ + title: string; + /** Timestamp when the request was created in the system. Format: ISO 8601 UTC timestamp. */ + creationDate: string; + /** Timestamp when the request was last modified. Format: ISO 8601 UTC timestamp. */ + modificationDate: string; + /** Timestamp when the request was soft-deleted. Null if the request has not been deleted. Soft deletes allow retaining history while hiding the request from normal operations. Format: ISO 8601 UTC timestamp. */ + deletionDate: string | null; + /** Resource owner (user or team) assigned to this information request. Returns null if no resource owner is assigned. */ + ownerAssignment: ResourceOwner | null; +} +export const InformationRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + uniqueId: S.String, + additionalControlIds: InformationRequestAdditionalControlIdsList, + approvalStatus: InformationRequestApprovalStatus, + cadence: S.NullOr(InformationRequestCadence), + frameworkCodes: InformationRequestFrameworkCodesList, + description: S.NullOr(S.String), + dueDate: S.NullOr(S.String), + evidenceCaptureDate: S.NullOr(S.String), + requestId: S.NullOr(S.String), + requestType: InformationRequestType, + title: S.String, + creationDate: S.String, + modificationDate: S.String, + deletionDate: S.NullOr(S.String), + ownerAssignment: S.NullOr(ResourceOwner), + }), +).annotate({ + identifier: "InformationRequest", +}) as any as S.Schema; + +export interface CreateAuditorRequest { + /** Email of the new user. */ + email: string; + /** First name of the new user. */ + givenName: string; + /** Last name of the new user. */ + familyName: string; +} +export const CreateAuditorRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + email: S.String, + givenName: S.String, + familyName: S.String, + }).pipe(T.Http({ method: "POST", uri: "/auditors", code: 200 })), +).annotate({ + identifier: "CreateAuditorRequest", +}) as any as S.Schema; + +export interface Auditor { + id: string; + /** The unique identifier for the organization. */ + organizationId: string; + /** The email address of the auditor. */ + email: string; + /** The given name (first name) of the auditor. */ + givenName: string; + /** The family name (last name) of the auditor. */ + familyName: string; +} +export const Auditor = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + organizationId: S.String, + email: S.String, + givenName: S.String, + familyName: S.String, + }), +).annotate({ identifier: "Auditor" }) as any as S.Schema; + +export interface CreateCommentForAuditEvidenceRequest { + auditId: string; + auditEvidenceId: string; + /** Text value of the comment */ + text: string; + /** Email of author. Must match an existing Vanta user and the user must exist under the Audit Firm who is making the API request */ + email: string; + /** When the comment was created in the external system */ + creationDate: string; +} +export const CreateCommentForAuditEvidenceRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + auditId: S.String.pipe(T.Label()), + auditEvidenceId: S.String.pipe(T.Label()), + text: S.String, + email: S.String, + creationDate: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/audits/{auditId}/evidence/{auditEvidenceId}/comments", + code: 200, + }), + ), +).annotate({ + identifier: "CreateCommentForAuditEvidenceRequest", +}) as any as S.Schema; + +export interface Comment { + /** The unique identifier for the comment */ + id: string; + /** The unique identifier for the audit evidence related to the comment. */ + auditEvidenceId: string; + /** The comment message */ + text: string; + /** When the comment was created */ + creationDate: string; + /** When the comment was updated */ + modificationDate: string | null; + /** When the comment was deleted */ + deletionDate: string | null; + /** The email of the comment author. This acts as a unique identifier to map users between Vanta and external systems. */ + email: string | null; + /** Human-readable display name of the comment author. Null if the author's name is not available (e.g., user was deleted). This enables correct author attribution in integrations where users cannot be reliably matched across systems by email alone. */ + authorName: string | null; +} +export const Comment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + auditEvidenceId: S.String, + text: S.String, + creationDate: S.String, + modificationDate: S.NullOr(S.String), + deletionDate: S.NullOr(S.String), + email: S.NullOr(S.String), + authorName: S.NullOr(S.String), + }), +).annotate({ identifier: "Comment" }) as any as S.Schema; + +export interface CreateCommentForControlRequest { + auditId: string; + controlId: string; + /** The text content of the comment. Must be at least 1 character. Can include questions, clarifications, or explanations related to the control. */ + text: string; + /** Email address of the comment author. Must match an existing Vanta user who belongs to the audit firm making the API request. This email uniquely identifies the author across systems. */ + email: string; + /** Timestamp when the comment was created in the external audit management system. This allows synchronizing comment timestamps from external systems. Format: ISO 8601 UTC timestamp. */ + creationDate: string; +} +export const CreateCommentForControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + controlId: S.String.pipe(T.Label()), + text: S.String, + email: S.String, + creationDate: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/audits/{auditId}/controls/{controlId}/comments", + code: 200, + }), + ), +).annotate({ + identifier: "CreateCommentForControlRequest", +}) as any as S.Schema; + +/** A comment on a control within an audit. These threaded discussions let auditors and customers collaborate on a specific control — asking questions, documenting reasoning, or recording follow-ups — directly against the control being assessed. Audit control comments are scoped to a single audit engagement and are distinct from any organization-internal control comments. */ +export interface AuditControlComment { + /** The unique identifier for the comment within Vanta's system. Format: ObjectId as a string (e.g., "6890e473dce1da5d8406f5e7"). */ + id: string; + /** The comment message content. Can include explanations, questions, or clarifications about the control. */ + text: string; + /** Timestamp when the comment was created. Format: ISO 8601 UTC timestamp. */ + creationDate: string; + /** Timestamp when the comment was last edited. Null if the comment has never been modified. Format: ISO 8601 UTC timestamp. */ + modificationDate: string | null; + /** Timestamp when the comment was soft-deleted. Null if the comment has not been deleted. Soft deletes retain the comment for audit history while hiding it from normal operations. Format: ISO 8601 UTC timestamp. */ + deletionDate: string | null; + /** Email address of the comment author. This email uniquely identifies users between Vanta and external audit systems. Null when the comment author can't be matched to a Vanta user. */ + email: string | null; + /** Human-readable display name of the comment author. Null if the author's name is not available (e.g., user was deleted). This enables correct author attribution in integrations where users cannot be reliably matched across systems by email alone. */ + authorName: string | null; +} +export const AuditControlComment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + text: S.String, + creationDate: S.String, + modificationDate: S.NullOr(S.String), + deletionDate: S.NullOr(S.String), + email: S.NullOr(S.String), + authorName: S.NullOr(S.String), + }), +).annotate({ + identifier: "AuditControlComment", +}) as any as S.Schema; + +export interface CreateCommentForInformationRequestRequest { + auditId: string; + requestId: string; + /** The text content of the comment. Must be at least 1 character. Can include questions, clarifications, or explanations related to the information request. */ + text: string; + /** Email address of the comment author. Must match an existing Vanta user who belongs to the audit firm making the API request. This email uniquely identifies the author across systems. */ + email: string; + /** Timestamp when the comment was created in the external audit management system. This allows synchronizing comment timestamps from external systems. Format: ISO 8601 UTC timestamp. */ + creationDate: string; +} +export const CreateCommentForInformationRequestRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + text: S.String, + email: S.String, + creationDate: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/audits/{auditId}/information-requests/{requestId}/comments", + code: 200, + }), + ), + ).annotate({ + identifier: "CreateCommentForInformationRequestRequest", + }) as any as S.Schema; + +/** A comment on an information request enables communication between auditors and customers regarding evidence requirements and submissions. These threaded discussions help clarify requests, explain or resolve questions about evidence, and are always visible to both parties once created. */ +export interface InformationRequestComment { + /** The unique identifier for the comment within Vanta's system. Format: ObjectId as a string (e.g., "6890e473dce1da5d8406f5e7"). */ + id: string; + /** The comment message content. Can include explanations, questions, or clarifications about the information request. */ + text: string; + /** Timestamp when the comment was created. Format: ISO 8601 UTC timestamp. */ + creationDate: string; + /** Timestamp when the comment was last edited. Null if the comment has never been modified. Format: ISO 8601 UTC timestamp. */ + modificationDate: string | null; + /** Timestamp when the comment was soft-deleted. Null if the comment has not been deleted. Soft deletes retain the comment for audit history while hiding it from normal operations. Format: ISO 8601 UTC timestamp. */ + deletionDate: string | null; + /** Email address of the comment author. This email uniquely identifies users between Vanta and external audit systems. Null when the comment author can't be matched to a Vanta user. */ + email: string | null; + /** Human-readable display name of the comment author. Null if the author's name is not available (e.g., user was deleted). This enables correct author attribution in integrations where users cannot be reliably matched across systems by email alone. */ + authorName: string | null; +} +export const InformationRequestComment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + text: S.String, + creationDate: S.String, + modificationDate: S.NullOr(S.String), + deletionDate: S.NullOr(S.String), + email: S.NullOr(S.String), + authorName: S.NullOr(S.String), + }), +).annotate({ + identifier: "InformationRequestComment", +}) as any as S.Schema; + +export type ControlDomain = + | "ARTIFICIAL_&_AUTONOMOUS_TECHNOLOGY" + | "ASSET_MANAGEMENT" + | "BUSINESS_CONTINUITY_&_DISASTER_RECOVERY" + | "CAPACITY_&_PERFORMANCE_PLANNING" + | "CHANGE_MANAGEMENT" + | "CLOUD_SECURITY" + | "COMPLIANCE" + | "CONFIGURATION_MANAGEMENT" + | "CONTINUOUS_MONITORING" + | "CRYPTOGRAPHIC_PROTECTIONS" + | "DATA_CLASSIFICATION_&_HANDLING" + | "EMBEDDED_TECHNOLOGY" + | "ENDPOINT_SECURITY" + | "HUMAN_RESOURCES_SECURITY" + | "IDENTIFICATION_&_AUTHENTICATION" + | "INCIDENT_RESPONSE" + | "INFORMATION_ASSURANCE" + | "MAINTENANCE" + | "MOBILE_DEVICE_MANAGEMENT" + | "NETWORK SECURITY" + | "PHYSICAL_&_ENVIRONMENTAL_SECURITY" + | "PRIVACY" + | "PROJECT_&_RESOURCE MANAGEMENT" + | "RISK_MANAGEMENT" + | "SECURE_ENGINEERING_&_ARCHITECTURE" + | "SECURITY_AWARENESS_&_TRAINING" + | "SECURITY_OPERATIONS" + | "SECURITY_&_PRIVACY_GOVERNANCE" + | "TECHNOLOGY_DEVELOPMENT_&_ACQUISITION" + | "THIRD-PARTY_MANAGEMENT" + | "THREAT_MANAGEMENT" + | "VULNERABILITY_&_PATCH_MANAGEMENT" + | "WEB_SECURITY" + | "ADMINISTRATIVE" + | "PHYSICAL" + | "TECHNICAL" + | "BASIC" + | "DERIVED"; +export const ControlDomain = /*@__PURE__*/ S.String; + +export type FrameworkId = + | "AU_E_8" + | "AWS_FTR" + | "CCPA" + | "CIS_V8" + | "CPS_234" + | "DORA" + | "FEDRAMP" + | "GDPR" + | "HIPAA" + | "HITRUST_E1" + | "ISO_27001" + | "ISO_27001_2022" + | "ISO_27017" + | "ISO_27018" + | "ISO_27701" + | "ISO_42001" + | "ISO_9001" + | "MSFT_SSPA" + | "MVSP" + | "NIS_2D" + | "NIST_171" + | "NIST_171_R3" + | "NIST_53" + | "NIST_AI_RMF" + | "NIST_CSF" + | "NIST_CSF_2" + | "OFDSS" + | "PCI_SAQ_A" + | "PCI_SAQ_A_EP" + | "PCI_SAQ_D_MERCHANT" + | "PCI_SAQ_D_SP" + | "PCI_DDS_4" + | "SOC_2" + | "SOX_ITGC" + | "UK_CYBER_ESSENTIALS" + | "US_DATA_PRIVACY"; +export const FrameworkId = /*@__PURE__*/ S.String; + +export type FrameworkSectionFrameworkId = FrameworkId | string; +export const FrameworkSectionFrameworkId = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export interface FrameworkSection { + frameworkId: FrameworkSectionFrameworkId; + sectionId: string; +} +export const FrameworkSection = /*@__PURE__*/ S.suspend(() => + S.Struct({ + frameworkId: FrameworkSectionFrameworkId, + sectionId: S.String, + }), +).annotate({ + identifier: "FrameworkSection", +}) as any as S.Schema; + +/** Framework sections that the control should be mapped to. */ +export type CreateCustomControlRequestSectionsList = Array; +export const CreateCustomControlRequestSectionsList = /*@__PURE__*/ S.Array( + FrameworkSection, +) as any as S.Schema; + +export type GdprRole = "BOTH" | "CONTROLLER" | "PROCESSOR"; +export const GdprRole = /*@__PURE__*/ S.String; + +export interface CreateCustomControlRequest { + auditId: string; + /** The external id of the control. */ + externalId: string; + /** The name of the control. */ + name: string | null; + /** The description of the control. */ + description: string; + /** The effective date of the control. */ + effectiveDate: string; + /** The category of the control. See the ControlDomain enum for possible values. */ + category: ControlDomain | (string & {}); + /** Framework sections that the control should be mapped to. */ + sections?: CreateCustomControlRequestSectionsList | null; + /** The GDPR role of the control, which specifies whether the data is being "collected" or "processed". See the GdprRole enum for possible values. This field should only be included for controls that are to be mapped to the GDPR framework. */ + role?: GdprRole | (string & {}) | null; +} +export const CreateCustomControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + externalId: S.String, + name: S.NullOr(S.String), + description: S.String, + effectiveDate: S.String, + category: ControlDomain, + sections: S.optional(S.NullOr(CreateCustomControlRequestSectionsList)), + role: S.optional(S.NullOr(GdprRole)), + }).pipe( + T.Http({ + method: "POST", + uri: "/audits/{auditId}/controls/custom-controls", + code: 200, + }), + ), +).annotate({ + identifier: "CreateCustomControlRequest", +}) as any as S.Schema; + +export type ControlSource = "Vanta" | "Custom"; +export const ControlSource = /*@__PURE__*/ S.String; + +/** The security domains that the control belongs to. */ +export type ControlDomainsList = Array; +export const ControlDomainsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface Owner { + /** Unique identifier for the person. */ + id: string; + /** Name of the person that is shown in product. */ + displayName: string; + /** Email address of the person. */ + emailAddress: string; +} +export const Owner = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.String, + emailAddress: S.String, + }), +).annotate({ identifier: "Owner" }) as any as S.Schema; + +export type CustomFieldValueCase1List = Array; +export const CustomFieldValueCase1List = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type CustomFieldValue = string | CustomFieldValueCase1List; +export const CustomFieldValue = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export interface CustomField { + label: string; + value: CustomFieldValue; +} +export const CustomField = /*@__PURE__*/ S.suspend(() => + S.Struct({ + label: S.String, + value: CustomFieldValue, + }), +).annotate({ identifier: "CustomField" }) as any as S.Schema; + +/** The control's custom field values, if control custom fields is included in your Vanta instance. */ +export type ControlCustomFieldsList = Array; +export const ControlCustomFieldsList = /*@__PURE__*/ S.Array( + CustomField, +) as any as S.Schema; + +export interface Control { + /** The control's unique ID. */ + id: string; + /** The control's external ID. */ + externalId: string | null; + /** The control's name. */ + name: string; + /** The control's description. */ + description: string; + /** The control's source, either "VANTA" or "CUSTOM". */ + source: ControlSource; + /** The security domains that the control belongs to. */ + domains: ControlDomainsList; + /** The control's owner. */ + owner: Owner | null; + /** The control's GDPR role, if the control is a GDPR control. */ + role?: string | null; + /** The control's custom field values, if control custom fields is included in your Vanta instance. */ + customFields: ControlCustomFieldsList; + /** When the control was created. Returns null for Vanta library controls. */ + creationDate: string | null; + /** When the control was last modified. Returns null for Vanta library controls. */ + modificationDate: string | null; +} +export const Control = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + externalId: S.NullOr(S.String), + name: S.String, + description: S.String, + source: ControlSource, + domains: ControlDomainsList, + owner: S.NullOr(Owner), + role: S.optional(S.NullOr(S.String)), + customFields: ControlCustomFieldsList, + creationDate: S.NullOr(S.String), + modificationDate: S.NullOr(S.String), + }), +).annotate({ identifier: "Control" }) as any as S.Schema; + +/** A set of controls, referenced by id, to map the evidence to */ +export type CreateCustomEvidenceRequestRequestControlIdsList = Array; +export const CreateCustomEvidenceRequestRequestControlIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export type RecurrenceDuration = + | "P0D" + | "P1D" + | "P1W" + | "P1M" + | "P3M" + | "P6M" + | "P1Y" + | "P2Y"; +export const RecurrenceDuration = /*@__PURE__*/ S.String; + +export interface CreateCustomEvidenceRequestRequest { + auditId: string; + /** A set of controls, referenced by id, to map the evidence to */ + controlIds: CreateCustomEvidenceRequestRequestControlIdsList; + /** Title for the evidence request */ + title: string; + /** Description for the evidence request */ + description: string; + /** Renewal cadence */ + cadence: RecurrenceDuration | (string & {}); + /** Duration representing when to send notifications, relative to renewal date */ + reminderWindow: RecurrenceDuration | (string & {}); + /** Whether this document contains sensitive data and needs more restrictive read access */ + isRestricted: boolean; + /** Email of the auditor who created the custom evidence request. */ + auditorEmail: string; +} +export const CreateCustomEvidenceRequestRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + controlIds: CreateCustomEvidenceRequestRequestControlIdsList, + title: S.String, + description: S.String, + cadence: RecurrenceDuration, + reminderWindow: RecurrenceDuration, + isRestricted: S.Boolean, + auditorEmail: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/audits/{auditId}/evidence/custom-evidence-requests", + code: 200, + }), + ), +).annotate({ + identifier: "CreateCustomEvidenceRequestRequest", +}) as any as S.Schema; + +/** A set of controls, referenced by id, to map the evidence to */ +export type CustomEvidenceRequestControlIdsList = Array; +export const CustomEvidenceRequestControlIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface CustomEvidenceRequest { + /** Internal id of the custom evidence request within Vanta */ + id: string; + /** A set of controls, referenced by id, to map the evidence to */ + controlIds: CustomEvidenceRequestControlIdsList; + /** Title for the evidence request */ + title: string; + /** Description for the evidence request */ + description: string; + /** Renewal cadence */ + cadence: RecurrenceDuration; + /** Duration representing when to send notifications, relative to renewal date */ + reminderWindow: RecurrenceDuration; + /** Whether this document contains sensitive data and needs more restrictive read access */ + isRestricted: boolean; +} +export const CustomEvidenceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + controlIds: CustomEvidenceRequestControlIdsList, + title: S.String, + description: S.String, + cadence: RecurrenceDuration, + reminderWindow: RecurrenceDuration, + isRestricted: S.Boolean, + }), +).annotate({ + identifier: "CustomEvidenceRequest", +}) as any as S.Schema; + +/** Framework codes this request addresses. An empty array if no framework codes are associated. */ +export type CreateInformationRequestRequestFrameworkCodesList = Array; +export const CreateInformationRequestRequestFrameworkCodesList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** Control IDs to link directly to this request, beyond those automatically mapped from framework codes. Each must be the `id` of an existing control in the customer's organization (the identifier returned by the controls endpoints). The request is rejected if any ID does not match a control. Omit or pass an empty array for no direct control links. */ +export type CreateInformationRequestRequestAdditionalControlIdsList = + Array; +export const CreateInformationRequestRequestAdditionalControlIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface CreateInformationRequestRequest { + auditId: string; + /** External unique ID to prevent duplicate requests across audit systems. Must be unique within the audit. Used for idempotency. */ + uniqueId: string; + /** Short, descriptive title summarizing what is being requested. Must be at least 1 character. */ + title: string; + /** Scope of evidence required. */ + requestType: InformationRequestType | (string & {}); + /** Detailed description explaining what evidence is needed. Helps the customer understand what to submit. Optional. */ + description?: string | null; + /** Framework codes this request addresses. An empty array if no framework codes are associated. */ + frameworkCodes: CreateInformationRequestRequestFrameworkCodesList; + /** How frequently this request recurs. Null or omitted for one-time requests. */ + cadence?: InformationRequestCadence | (string & {}) | null; + /** Deadline for fulfilling this request. Null or omitted if no deadline. Format: ISO 8601 UTC timestamp. */ + dueDate?: string | null; + /** Start date of the audit period. Evidence before this date may not be accepted. Null or omitted if not restricted. Format: ISO 8601 UTC timestamp. */ + evidenceCaptureDate?: string | null; + /** Control IDs to link directly to this request, beyond those automatically mapped from framework codes. Each must be the `id` of an existing control in the customer's organization (the identifier returned by the controls endpoints). The request is rejected if any ID does not match a control. Omit or pass an empty array for no direct control links. */ + additionalControlIds?: CreateInformationRequestRequestAdditionalControlIdsList; +} +export const CreateInformationRequestRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + uniqueId: S.String, + title: S.String, + requestType: InformationRequestType, + description: S.optional(S.NullOr(S.String)), + frameworkCodes: CreateInformationRequestRequestFrameworkCodesList, + cadence: S.optional(S.NullOr(InformationRequestCadence)), + dueDate: S.optional(S.NullOr(S.String)), + evidenceCaptureDate: S.optional(S.NullOr(S.String)), + additionalControlIds: S.optional( + CreateInformationRequestRequestAdditionalControlIdsList, + ), + }).pipe( + T.Http({ + method: "POST", + uri: "/audits/{auditId}/information-requests", + code: 200, + }), + ), +).annotate({ + identifier: "CreateInformationRequestRequest", +}) as any as S.Schema; + +export interface DeleteCommentForControlRequest { + auditId: string; + controlId: string; + commentId: string; + /** Email address of the comment author. Must match an existing Vanta user who belongs to the audit firm making the API request. This email uniquely identifies the author across systems. */ + email: string; +} +export const DeleteCommentForControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + controlId: S.String.pipe(T.Label()), + commentId: S.String.pipe(T.Label()), + email: S.String, + }).pipe( + T.Http({ + method: "DELETE", + uri: "/audits/{auditId}/controls/{controlId}/comments/{commentId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteCommentForControlRequest", +}) as any as S.Schema; + +export interface DeleteCommentForControlResponse {} +export const DeleteCommentForControlResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteCommentForControlResponse", +}) as any as S.Schema; + +export interface DeleteCommentForInformationRequestRequest { + auditId: string; + requestId: string; + commentId: string; + /** Email address of the comment author. Must match an existing Vanta user who belongs to the audit firm making the API request. This email uniquely identifies the author across systems. */ + email: string; +} +export const DeleteCommentForInformationRequestRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + commentId: S.String.pipe(T.Label()), + email: S.String, + }).pipe( + T.Http({ + method: "DELETE", + uri: "/audits/{auditId}/information-requests/{requestId}/comments/{commentId}", + code: 200, + }), + ), + ).annotate({ + identifier: "DeleteCommentForInformationRequestRequest", + }) as any as S.Schema; + +export interface DeleteCommentForInformationRequestResponse {} +export const DeleteCommentForInformationRequestResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "DeleteCommentForInformationRequestResponse", + }) as any as S.Schema; + +export interface DeleteInformationRequestRequest { + auditId: string; + requestId: string; +} +export const DeleteInformationRequestRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/audits/{auditId}/information-requests/{requestId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteInformationRequestRequest", +}) as any as S.Schema; + +export interface DeleteInformationRequestResponse {} +export const DeleteInformationRequestResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteInformationRequestResponse", +}) as any as S.Schema; + +/** Emails of auditors who may access the new audit. Minimum one entry required. Each email must match an active user in the authenticated audit firm's domain. */ +export type DuplicateRequestAllowAuditorEmailsList = Array; +export const DuplicateRequestAllowAuditorEmailsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface DuplicateRequest { + /** ID of the source IRL audit to duplicate. */ + sourceAuditId: string; + /** Display name for the new audit engagement. */ + displayName: string; + /** Start of the audit window for the new audit. */ + auditStartDate: string; + /** End of the audit window for the new audit. */ + auditEndDate: string; + /** When auditors gain access to the new audit. */ + earlyAccessStartsAt: string; + /** Emails of auditors who may access the new audit. Minimum one entry required. Each email must match an active user in the authenticated audit firm's domain. */ + allowAuditorEmails: DuplicateRequestAllowAuditorEmailsList; +} +export const DuplicateRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + sourceAuditId: S.String, + displayName: S.String, + auditStartDate: S.String, + auditEndDate: S.String, + earlyAccessStartsAt: S.String, + allowAuditorEmails: DuplicateRequestAllowAuditorEmailsList, + }).pipe(T.Http({ method: "POST", uri: "/audits/duplicate", code: 200 })), +).annotate({ + identifier: "DuplicateRequest", +}) as any as S.Schema; + +/** Emails of auditors with access to audit */ +export type AuditAllowAuditorEmailsList = Array; +export const AuditAllowAuditorEmailsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type AuditFocus = "EXTERNAL" | "INTERNAL"; +export const AuditFocus = /*@__PURE__*/ S.String; + +/** Metadata about the auditor request list. This field is only present for IRL (Information Request List) based audits and will be undefined for standard audits. Use the presence of this field to differentiate between IRL and non-IRL audits. */ +export interface AuditAuditorRequestListMetadata { + /** Timestamp when information requests were shared with the customer. Null if not shared. */ + requestsSharedWithCustomer: string | null; +} +export const AuditAuditorRequestListMetadata = /*@__PURE__*/ S.suspend(() => + S.Struct({ + requestsSharedWithCustomer: S.NullOr(S.String), + }), +).annotate({ + identifier: "AuditAuditorRequestListMetadata", +}) as any as S.Schema; + +export type AuditSegmentKind = "PROGRAM" | "SYSTEM"; +export const AuditSegmentKind = /*@__PURE__*/ S.String; + +/** The framework reached through a segment. */ +export interface AuditSegmentFramework { + /** The stable identifier of the framework (for example `soc2`). */ + id: string; + /** The human-readable framework name. */ + displayName: string; + /** The short framework name used in compact UI. */ + shortName: string; +} +export const AuditSegmentFramework = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.String, + shortName: S.String, + }), +).annotate({ + identifier: "AuditSegmentFramework", +}) as any as S.Schema; + +/** A business unit or information-system association on an audit segment. */ +export interface AuditSegmentAssociation { + /** The unique identifier of the associated business unit or information system. */ + id: string; + /** The human-readable name of the associated business unit or information system. */ + displayName: string; +} +export const AuditSegmentAssociation = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.String, + }), +).annotate({ + identifier: "AuditSegmentAssociation", +}) as any as S.Schema; + +export type AuditSoc2ReportType = "soc2type1" | "soc2type2"; +export const AuditSoc2ReportType = /*@__PURE__*/ S.String; + +export type AuditSoc2Tsc = + | "SECURITY" + | "AVAILABILITY" + | "CONFIDENTIALITY" + | "PRIVACY" + | "PROCESSING_INTEGRITY"; +export const AuditSoc2Tsc = /*@__PURE__*/ S.String; + +/** Trust Services Criteria this segment covers. */ +export type AuditSoc2DeliverableTscsList = Array; +export const AuditSoc2DeliverableTscsList = /*@__PURE__*/ S.Array( + AuditSoc2Tsc, +) as any as S.Schema; + +/** Per-segment SOC 2 report configuration. Null when the segment is not SOC 2 or has no configured deliverable. */ +export interface AuditSoc2Deliverable { + /** SOC 2 report type for this segment. */ + reportType: AuditSoc2ReportType; + /** Trust Services Criteria this segment covers. */ + tscs: AuditSoc2DeliverableTscsList; +} +export const AuditSoc2Deliverable = /*@__PURE__*/ S.suspend(() => + S.Struct({ + reportType: AuditSoc2ReportType, + tscs: AuditSoc2DeliverableTscsList, + }), +).annotate({ + identifier: "AuditSoc2Deliverable", +}) as any as S.Schema; + +/** One segment of an audit's scope. A live single-framework audit has exactly one entry; a live multi-framework audit has one per in-scope framework (and business unit or system, when applicable). Soft-deleted audits return an empty list. `displayName` is the segment label owned by audit scope (for example "{Framework}" or "{Framework} — {Business Unit}"). `soc2Deliverable` is the per-segment SOC 2 config, or null. `businessUnit` is set for program segments that are BU-scoped and null otherwise. `system` is set for system segments and null otherwise. */ +export interface AuditSegment { + /** The unique identifier for the segment. */ + id: string; + /** Whether this segment is a program (framework / business unit) or a system. */ + kind: AuditSegmentKind; + /** The segment's display label. Do not reconstruct this from framework + BU. */ + displayName: string; + /** The framework reached through this segment. */ + framework: AuditSegmentFramework; + /** The business unit this program segment is scoped to, or null when the segment is not BU-scoped or the BU cannot be resolved. */ + businessUnit: AuditSegmentAssociation | null; + /** The information system this system segment is scoped to, or null on program segments. */ + system: AuditSegmentAssociation | null; + /** SOC 2 report type and Trust Services Criteria for this segment, or null. */ + soc2Deliverable: AuditSoc2Deliverable | null; +} +export const AuditSegment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + kind: AuditSegmentKind, + displayName: S.String, + framework: AuditSegmentFramework, + businessUnit: S.NullOr(AuditSegmentAssociation), + system: S.NullOr(AuditSegmentAssociation), + soc2Deliverable: S.NullOr(AuditSoc2Deliverable), + }), +).annotate({ identifier: "AuditSegment" }) as any as S.Schema; + +/** The audit's scope as a list of segments. Always present. A live single-framework audit has one entry; a multi-framework audit has one entry per in-scope framework (and business unit or system, when applicable). Soft-deleted audits return an empty list. Prefer this over the deprecated top-level `framework` field. */ +export type AuditSegmentsList = Array; +export const AuditSegmentsList = /*@__PURE__*/ S.Array( + AuditSegment, +) as any as S.Schema; + +export interface Audit { + /** The unique identifier for the audit. */ + id: string; + /** The domain name of the customer organization being audited (e.g. vanta.com) */ + customerOrganizationName: string; + /** The human readable name of the customer organization being audited (e.g. Vanta) */ + customerDisplayName: string | null; + /** The uuid of the customer organization being audited */ + customerOrganizationId: string; + /** The start of the audit window. This is also when data collection for audit starts. */ + auditStartDate: string; + /** The end of the audit window. */ + auditEndDate: string; + /** Timestamp at which auditors gain access to the audit. Occurs before the audit window begins */ + earlyAccessStartsAt: string | null; + /** Legacy singular framework display name from the audit type. Incomplete for a multi-framework audit — use `segments` for framework identity. */ + framework: string; + /** The display name for the audit. Returns the custom audit name if set, otherwise returns the framework name. */ + displayName: string; + /** Emails of auditors with access to audit */ + allowAuditorEmails: AuditAllowAuditorEmailsList; + /** Set to true if all auditors in audit firm have access */ + allowAllAuditors: boolean; + /** Timestamp when the audit was deleted */ + deletionDate: string | null; + /** Timestamp when the audit was created */ + creationDate: string; + /** Timestamp when the audit was updated */ + modificationDate: string | null; + /** Timestamp when the audit was marked completed, and report was uploaded */ + completionDate: string | null; + /** Audit focus determines if the audit is internal or external facing */ + auditFocus: AuditFocus; + /** Metadata about the auditor request list. This field is only present for IRL (Information Request List) based audits and will be undefined for standard audits. Use the presence of this field to differentiate between IRL and non-IRL audits. */ + auditorRequestListMetadata?: AuditAuditorRequestListMetadata; + /** The audit's scope as a list of segments. Always present. A live single-framework audit has one entry; a multi-framework audit has one entry per in-scope framework (and business unit or system, when applicable). Soft-deleted audits return an empty list. Prefer this over the deprecated top-level `framework` field. */ + segments: AuditSegmentsList; +} +export const Audit = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + customerOrganizationName: S.String, + customerDisplayName: S.NullOr(S.String), + customerOrganizationId: S.String, + auditStartDate: S.String, + auditEndDate: S.String, + earlyAccessStartsAt: S.NullOr(S.String), + framework: S.String, + displayName: S.String, + allowAuditorEmails: AuditAllowAuditorEmailsList, + allowAllAuditors: S.Boolean, + deletionDate: S.NullOr(S.String), + creationDate: S.String, + modificationDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + auditFocus: AuditFocus, + auditorRequestListMetadata: S.optional(AuditAuditorRequestListMetadata), + segments: AuditSegmentsList, + }), +).annotate({ identifier: "Audit" }) as any as S.Schema; + +export interface FlagInformationRequestEvidenceRequest { + auditId: string; + requestId: string; + /** Email of the auditor flagging the evidence. Must match an existing Vanta user who belongs to the audit firm making the API request. */ + auditorEmail: string; + /** Detailed explanation of what issues were found with the evidence. This reason is visible to the customer and guides them on what to fix. Must be at least 1 character. */ + reason: string; +} +export const FlagInformationRequestEvidenceRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + auditorEmail: S.String, + reason: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/audits/{auditId}/information-requests/{requestId}/flag-evidence", + code: 200, + }), + ), +).annotate({ + identifier: "FlagInformationRequestEvidenceRequest", +}) as any as S.Schema; + +export interface GetAuditRequest { + auditId: string; +} +export const GetAuditRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/audits/{auditId}", code: 200 })), +).annotate({ + identifier: "GetAuditRequest", +}) as any as S.Schema; + +export interface GetAuditEvidenceRequest { + auditId: string; + auditEvidenceId: string; +} +export const GetAuditEvidenceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + auditEvidenceId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/evidence/{auditEvidenceId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetAuditEvidenceRequest", +}) as any as S.Schema; + +export type AuditEvidenceState = + | "Accepted" + | "Flagged" + | "Initialized" + | "NA" + | "Not ready for audit" + | "Ready for audit"; +export const AuditEvidenceState = /*@__PURE__*/ S.String; + +export type AuditEvidenceType = "Evidence Request" | "Policy" | "Test"; +export const AuditEvidenceType = /*@__PURE__*/ S.String; + +/** A list sections associated to the control */ +export type EvidenceControlSectionNamesList = Array; +export const EvidenceControlSectionNamesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface EvidenceControl { + /** Name of control associated to this evidence */ + name: string; + /** A list sections associated to the control */ + sectionNames: EvidenceControlSectionNamesList; +} +export const EvidenceControl = /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + sectionNames: EvidenceControlSectionNamesList, + }), +).annotate({ + identifier: "EvidenceControl", +}) as any as S.Schema; + +/** The controls associated to this evidence */ +export type EvidenceRelatedControlsList = Array; +export const EvidenceRelatedControlsList = /*@__PURE__*/ S.Array( + EvidenceControl, +) as any as S.Schema; + +export interface Evidence { + /** Vanta internal reference to evidence */ + id: string; + /** This is a static UUID to map Audit Firm controls to Vanta controls */ + externalId: string; + /** Vanta internal statuses for audit evidence */ + status: AuditEvidenceState; + /** Mutable name for evidence. Not guaranteed to be unique. */ + name: string; + /** The date this Audit Evidence was deleted */ + deletionDate: string | null; + /** The date this Audit Evidence was created */ + creationDate: string; + /** Point in time that status was last updated */ + statusUpdatedDate: string; + /** The outcome of the automated test run, for Test-type evidence */ + testStatus: string | null; + /** The type of Audit Evidence */ + evidenceType: AuditEvidenceType; + /** Unique identifier for evidence */ + evidenceId: string; + /** The controls associated to this evidence */ + relatedControls: EvidenceRelatedControlsList; + /** The description for the evidence. It will be set to null if the evidence is deleted */ + description: string | null; +} +export const Evidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + externalId: S.String, + status: AuditEvidenceState, + name: S.String, + deletionDate: S.NullOr(S.String), + creationDate: S.String, + statusUpdatedDate: S.String, + testStatus: S.NullOr(S.String), + evidenceType: AuditEvidenceType, + evidenceId: S.String, + relatedControls: EvidenceRelatedControlsList, + description: S.NullOr(S.String), + }), +).annotate({ identifier: "Evidence" }) as any as S.Schema; + +export interface GetAuditEvidenceCommentRequest { + auditId: string; + auditEvidenceId: string; + commentId: string; +} +export const GetAuditEvidenceCommentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + auditEvidenceId: S.String.pipe(T.Label()), + commentId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/evidence/{auditEvidenceId}/comments/{commentId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetAuditEvidenceCommentRequest", +}) as any as S.Schema; + +export interface GetCommentForInformationRequestRequest { + auditId: string; + requestId: string; + commentId: string; +} +export const GetCommentForInformationRequestRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + commentId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/information-requests/{requestId}/comments/{commentId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetCommentForInformationRequestRequest", +}) as any as S.Schema; + +export interface GetFrameworkCodesRequest { + auditId: string; +} +export const GetFrameworkCodesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/framework-codes", + code: 200, + }), + ), +).annotate({ + identifier: "GetFrameworkCodesRequest", +}) as any as S.Schema; + +/** Array of valid framework codes for the audit's framework (e.g., "CC6.1", "CC6.2"). These represent the different framework sections available for creating information requests. */ +export type FrameworkCodesFrameworkCodesList = Array; +export const FrameworkCodesFrameworkCodesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Framework codes response resource */ +export interface FrameworkCodes { + /** Array of valid framework codes for the audit's framework (e.g., "CC6.1", "CC6.2"). These represent the different framework sections available for creating information requests. */ + frameworkCodes: FrameworkCodesFrameworkCodesList; +} +export const FrameworkCodes = /*@__PURE__*/ S.suspend(() => + S.Struct({ + frameworkCodes: FrameworkCodesFrameworkCodesList, + }), +).annotate({ identifier: "FrameworkCodes" }) as any as S.Schema; + +export interface GetInformationRequestRequest { + auditId: string; + requestId: string; +} +export const GetInformationRequestRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/information-requests/{requestId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetInformationRequestRequest", +}) as any as S.Schema; + +export interface GetInformationRequestEvidenceRequest { + auditId: string; + requestId: string; + evidenceId: string; +} +export const GetInformationRequestEvidenceRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + evidenceId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/information-requests/{requestId}/evidence/{evidenceId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetInformationRequestEvidenceRequest", +}) as any as S.Schema; + +export type InformationRequestSupportedEvidenceType = + | "UPLOADED_DOCUMENT" + | "OBSERVATION" + | "LINK" + | "VANTA_DOCUMENT" + | "VANTA_POLICY" + | "VANTA_TEST" + | "VANTA_TEST_SNAPSHOT"; +export const InformationRequestSupportedEvidenceType = /*@__PURE__*/ S.String; + +/** Evidence in the form of an uploaded document file. The URL is a temporary presigned URL that expires after a certain period. */ +export interface UploadedDocumentEvidence { + /** The unique identifier for the uploaded document in Vanta's system. */ + id: string; + /** The original filename of the uploaded document. Undefined if the filename was not captured during upload. */ + filename?: string; + /** The MIME type of the document indicating its file format. Common types: "application/pdf", "image/png", "image/jpeg", "text/plain" */ + mimeType: string; + /** A presigned URL for downloading the document. This URL is temporary and expires after a limited time. Request a new evidence list to get a fresh URL if expired. */ + url: string; +} +export const UploadedDocumentEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + filename: S.optional(S.String), + mimeType: S.String, + url: S.String, + }), +).annotate({ + identifier: "UploadedDocumentEvidence", +}) as any as S.Schema; + +/** Evidence in the form of a link to external documentation or resources. */ +export interface LinkEvidence { + /** The title or descriptive name for the link. */ + title: string; + /** Optional description providing additional context about the link. */ + description?: string; + /** The URL pointing to the external documentation or resource. */ + url: string; +} +export const LinkEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + title: S.String, + description: S.optional(S.String), + url: S.String, + }), +).annotate({ identifier: "LinkEvidence" }) as any as S.Schema; + +/** Evidence in the form of a text observation or note. */ +export interface ObservationEvidence { + /** The text content of the observation. */ + observationDetails: string; +} +export const ObservationEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + observationDetails: S.String, + }), +).annotate({ + identifier: "ObservationEvidence", +}) as any as S.Schema; + +/** Information about the user who added this file version to the document. Undefined if the user information is not available. */ +export interface VantaDocumentEvidenceAddedBy { + email: string; + name: string; +} +export const VantaDocumentEvidenceAddedBy = /*@__PURE__*/ S.suspend(() => + S.Struct({ + email: S.String, + name: S.String, + }), +).annotate({ + identifier: "VantaDocumentEvidenceAddedBy", +}) as any as S.Schema; + +/** Discriminator to identify this as an uploaded file. */ +export type VantaDocumentUploadedEvidenceType = "uploaded"; +export const VantaDocumentUploadedEvidenceType = /*@__PURE__*/ S.String; + +/** Represents an uploaded file in a Vanta Document. The file is stored in Vanta's system and accessed via a presigned URL. */ +export interface VantaDocumentUploadedEvidence { + /** Discriminator to identify this as an uploaded file. */ + type: VantaDocumentUploadedEvidenceType; + /** The unique identifier for the file version in Vanta's system. */ + id: string; + /** The original filename of the uploaded document. Undefined if the filename was not captured during upload. */ + filename?: string; + /** The MIME type of the document indicating its file format. Common types: "application/pdf", "image/png", "image/jpeg", "text/plain" */ + mimeType: string; + /** A presigned URL for downloading the document. This URL is temporary and expires after a limited time. Request a new evidence list to get a fresh URL if expired. */ + url: string; +} +export const VantaDocumentUploadedEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: VantaDocumentUploadedEvidenceType, + id: S.String, + filename: S.optional(S.String), + mimeType: S.String, + url: S.String, + }), +).annotate({ + identifier: "VantaDocumentUploadedEvidence", +}) as any as S.Schema; + +/** Discriminator to identify this as an external link. */ +export type VantaDocumentLinkEvidenceType = "link"; +export const VantaDocumentLinkEvidenceType = /*@__PURE__*/ S.String; + +/** Represents an external link in a Vanta Document. The link points to documentation hosted outside of Vanta's system. */ +export interface VantaDocumentLinkEvidence { + /** Discriminator to identify this as an external link. */ + type: VantaDocumentLinkEvidenceType; + /** The unique identifier for the file version in Vanta's system. */ + id: string; + /** The URL pointing to the external documentation or resource. */ + url: string; +} +export const VantaDocumentLinkEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: VantaDocumentLinkEvidenceType, + id: S.String, + url: S.String, + }), +).annotate({ + identifier: "VantaDocumentLinkEvidence", +}) as any as S.Schema; + +/** The file or link associated with this document version. Use the `type` discriminator to determine whether it's an uploaded file or an external link. */ +export type VantaDocumentEvidenceFile = + | VantaDocumentUploadedEvidence + | VantaDocumentLinkEvidence; +export const VantaDocumentEvidenceFile = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +/** Evidence in the form of a Vanta Document. Vanta Documents are managed documents with metadata like expiration dates and versioning. They can either be uploaded files stored in Vanta or links to external documentation. */ +export interface VantaDocumentEvidence { + /** The title of the document as displayed in Vanta. */ + title: string; + /** Optional description providing additional context about the document. */ + description?: string; + /** The date when the document version expires and should be renewed. Undefined if no expiration is set. Format: ISO 8601 UTC timestamp. */ + expirationDate?: string; + /** Information about the user who added this file version to the document. Undefined if the user information is not available. */ + addedBy?: VantaDocumentEvidenceAddedBy; + /** The unique identifier of the document version submitted as evidence. */ + documentVersionId: string; + /** The file or link associated with this document version. Use the `type` discriminator to determine whether it's an uploaded file or an external link. */ + file: VantaDocumentEvidenceFile; +} +export const VantaDocumentEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + title: S.String, + description: S.optional(S.String), + expirationDate: S.optional(S.String), + addedBy: S.optional(VantaDocumentEvidenceAddedBy), + documentVersionId: S.String, + file: VantaDocumentEvidenceFile, + }), +).annotate({ + identifier: "VantaDocumentEvidence", +}) as any as S.Schema; + +/** Information about the user who last edited this policy version. Undefined if the user information is not available. */ +export type VantaPolicyEvidenceLastEditedBy = VantaDocumentEvidenceAddedBy; +export const VantaPolicyEvidenceLastEditedBy = VantaDocumentEvidenceAddedBy; + +/** The uploaded policy file for this version. */ +export interface VantaPolicyEvidenceFile { + /** The date when this policy version became effective, or when it was created. Format: ISO 8601 UTC timestamp. */ + effectiveOrCreationDate: string; + /** The locale/language of the policy document. Examples: "EN" for English, "ES" for Spanish, "FR" for French */ + locale: string; + /** A presigned URL for downloading the policy document. This URL is temporary and expires after a limited time. Request a new evidence list to get a fresh URL if expired. */ + url: string; + /** The MIME type of the policy document indicating its file format. Common types: "application/pdf", "application/msword" */ + mimeType: string; + /** The original filename of the uploaded policy document. Undefined if the filename was not captured during upload. */ + filename?: string; + /** The unique identifier for the uploaded policy file in Vanta's system. */ + id: string; +} +export const VantaPolicyEvidenceFile = /*@__PURE__*/ S.suspend(() => + S.Struct({ + effectiveOrCreationDate: S.String, + locale: S.String, + url: S.String, + mimeType: S.String, + filename: S.optional(S.String), + id: S.String, + }), +).annotate({ + identifier: "VantaPolicyEvidenceFile", +}) as any as S.Schema; + +/** Evidence in the form of a Vanta Policy. Vanta Policies are compliance policies with metadata like locale, effective dates, and versioning. Policies are always uploaded files stored in Vanta's system. */ +export interface VantaPolicyEvidence { + /** The title of the policy as displayed in Vanta. */ + title: string; + /** Optional description providing additional context about the policy. */ + description?: string; + /** The date when the policy version expires and should be renewed. Undefined if no expiration is set. Format: ISO 8601 UTC timestamp. */ + expirationDate?: string; + /** Information about the user who last edited this policy version. Undefined if the user information is not available. */ + lastEditedBy?: VantaDocumentEvidenceAddedBy; + /** The policy type this evidence belongs to (e.g. "information-security-policy-bsi"). Policies prefixed with "custom-" are customer-defined; others are Vanta-provided templates. */ + policyId: string; + /** The identifier of the approved policy version that was submitted as evidence. A new version is created each time a policy is updated and approved. */ + policyVersionId: string; + /** The identifier of the locale-specific file within the policy version. Each policy version may contain multiple files, one per supported language. */ + policyVersionFileId: string; + /** The uploaded policy file for this version. */ + file: VantaPolicyEvidenceFile; +} +export const VantaPolicyEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + title: S.String, + description: S.optional(S.String), + expirationDate: S.optional(S.String), + lastEditedBy: S.optional(VantaDocumentEvidenceAddedBy), + policyId: S.String, + policyVersionId: S.String, + policyVersionFileId: S.String, + file: VantaPolicyEvidenceFile, + }), +).annotate({ + identifier: "VantaPolicyEvidence", +}) as any as S.Schema; + +export type VantaTestRunStatus = + | "NA" + | "IN_PROGRESS" + | "FAIL" + | "PASS" + | "INVALID" + | "DISABLED"; +export const VantaTestRunStatus = /*@__PURE__*/ S.String; + +export type VantaTestFileType = + | "TEST_EVIDENCE_WORKPAPER" + | "TEST_RAW_DATA" + | "OUT_OF_SCOPE_RESOURCES" + | "API_REQUESTS"; +export const VantaTestFileType = /*@__PURE__*/ S.String; + +/** The evidence file for this test run. */ +export interface VantaTestEvidenceFile { + /** The MIME type of the evidence file. Common types: "application/pdf" for workpapers, "text/csv" for raw data */ + mimeType: string; + /** A presigned URL for downloading the evidence file. This URL is temporary and expires after a limited time. Request a new evidence list to get a fresh URL if expired. */ + url: string; +} +export const VantaTestEvidenceFile = /*@__PURE__*/ S.suspend(() => + S.Struct({ + mimeType: S.String, + url: S.String, + }), +).annotate({ + identifier: "VantaTestEvidenceFile", +}) as any as S.Schema; + +/** Evidence in the form of a Vanta automated test run. Vanta Tests are automated compliance tests with metadata like test status, execution time, and file type. Tests generate evidence files that can be workpapers, raw data, or API request logs. */ +export interface VantaTestEvidence { + /** The title of the test run as displayed in Vanta. */ + title: string; + /** The unique identifier for the test in Vanta's system. */ + testId: string; + /** The unique identifier for the point-in-time capture of this test run's evidence. A snapshot is an immutable record of all files (workpapers, raw data, etc.) generated during a single test execution. */ + snapshotId: string; + /** The outcome status of the test run. */ + testRunStatus: VantaTestRunStatus; + /** The date and time when the test was executed. Format: ISO 8601 UTC timestamp. */ + executedAt: string; + /** The type of evidence file included in this evidence. */ + fileType: VantaTestFileType; + /** The evidence file for this test run. */ + file: VantaTestEvidenceFile; +} +export const VantaTestEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + title: S.String, + testId: S.String, + snapshotId: S.String, + testRunStatus: VantaTestRunStatus, + executedAt: S.String, + fileType: VantaTestFileType, + file: VantaTestEvidenceFile, + }), +).annotate({ + identifier: "VantaTestEvidence", +}) as any as S.Schema; + +/** The outcome status of the test run. */ +export type VantaTestSnapshotEvidenceTestRunStatus = + | "NA" + | "IN_PROGRESS" + | "FAIL" + | "PASS" + | "INVALID" + | "DISABLED"; +export const VantaTestSnapshotEvidenceTestRunStatus = /*@__PURE__*/ S.String; + +/** Evidence in the form of a Vanta automated test run snapshot. Unlike VantaTestEvidence (which represents a single file within a test run's evidence packet), a snapshot represents the entire test-run bundle. Use the dedicated snapshot detail endpoint to retrieve the files associated with a snapshot. */ +export interface VantaTestSnapshotEvidence { + /** The unique identifier for the point-in-time capture of this test run's evidence. A snapshot is an immutable record of all files (workpapers, raw data, etc.) generated during a single test execution. */ + snapshotId: string; + /** The unique identifier for the test in Vanta's system. */ + testId: string; + /** The unique identifier for the test run this snapshot was captured from. */ + testRunId: string; + /** The title of the test run as displayed in Vanta. */ + testRunTitle: string; + /** The outcome status of the test run. */ + testRunStatus: VantaTestSnapshotEvidenceTestRunStatus; + /** The date and time when the test was executed. Format: ISO 8601 UTC timestamp. */ + testRunExecutedAt: string; +} +export const VantaTestSnapshotEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + snapshotId: S.String, + testId: S.String, + testRunId: S.String, + testRunTitle: S.String, + testRunStatus: VantaTestSnapshotEvidenceTestRunStatus, + testRunExecutedAt: S.String, + }), +).annotate({ + identifier: "VantaTestSnapshotEvidence", +}) as any as S.Schema; + +/** Union type representing the different forms of evidence content. The specific type is determined by the `evidenceType` field in InformationRequestEvidence. */ +export type InformationRequestEvidenceUnion = + | UploadedDocumentEvidence + | LinkEvidence + | ObservationEvidence + | VantaDocumentEvidence + | VantaPolicyEvidence + | VantaTestEvidence + | VantaTestSnapshotEvidence; +export const InformationRequestEvidenceUnion = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export interface InformationRequestEvidence { + /** The unique identifier for the evidence within Vanta's system. Format: ObjectId as a string (e.g., "6890e473dce1da5d8406f5e7"). */ + id: string; + /** Type of evidence attached to this information request. Determines the structure of the `evidence` field. */ + evidenceType: InformationRequestSupportedEvidenceType; + /** Timestamp when the evidence was made visible to the auditor. Null if the customer has not yet shared this evidence with the auditor. Evidence must be shared before the auditor can review it. Format: ISO 8601 UTC timestamp. */ + visibleToAuditorDate?: string | null; + /** Timestamp when the evidence was created/uploaded. Format: ISO 8601 UTC timestamp. */ + creationDate: string; + /** Timestamp when the evidence was last modified. Format: ISO 8601 UTC timestamp. */ + modificationDate: string; + /** Timestamp when the evidence was soft-deleted. Null if the evidence has not been deleted. Soft deletes retain evidence in the system for audit history while hiding it from normal operations. Format: ISO 8601 UTC timestamp. */ + deletionDate?: string | null; + /** The evidence content. Structure varies based on evidenceType. */ + evidence: InformationRequestEvidenceUnion; +} +export const InformationRequestEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + evidenceType: InformationRequestSupportedEvidenceType, + visibleToAuditorDate: S.optional(S.NullOr(S.String)), + creationDate: S.String, + modificationDate: S.String, + deletionDate: S.optional(S.NullOr(S.String)), + evidence: InformationRequestEvidenceUnion, + }), +).annotate({ + identifier: "InformationRequestEvidence", +}) as any as S.Schema; + +export interface GetInformationRequestTestSnapshotEvidenceDetailRequest { + auditId: string; + requestId: string; + evidenceId: string; +} +export const GetInformationRequestTestSnapshotEvidenceDetailRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + evidenceId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/information-requests/{requestId}/evidence/{evidenceId}/test-snapshot", + code: 200, + }), + ), + ).annotate({ + identifier: "GetInformationRequestTestSnapshotEvidenceDetailRequest", + }) as any as S.Schema; + +/** Integration metadata for a test, mirroring the Vanta web app. */ +export interface VantaTestSnapshotIntegration { + integrationId: string; + displayName: string; +} +export const VantaTestSnapshotIntegration = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String, + displayName: S.String, + }), +).annotate({ + identifier: "VantaTestSnapshotIntegration", +}) as any as S.Schema; + +/** Integrations whose data feeds the test. */ +export type VantaTestSnapshotEvidenceDetailIntegrationsList = + Array; +export const VantaTestSnapshotEvidenceDetailIntegrationsList = + /*@__PURE__*/ S.Array( + VantaTestSnapshotIntegration, + ) as any as S.Schema; + +export interface VantaTestSnapshotSlaRemediationSettings { + numericValue: number; + unit: string | null; +} +export const VantaTestSnapshotSlaRemediationSettings = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + numericValue: S.Number, + unit: S.NullOr(S.String), + }), +).annotate({ + identifier: "VantaTestSnapshotSlaRemediationSettings", +}) as any as S.Schema; + +export interface VantaTestSnapshotSlaRemediation { + id: string; + settings: VantaTestSnapshotSlaRemediationSettings | null; +} +export const VantaTestSnapshotSlaRemediation = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + settings: S.NullOr(VantaTestSnapshotSlaRemediationSettings), + }), +).annotate({ + identifier: "VantaTestSnapshotSlaRemediation", +}) as any as S.Schema; + +/** One row of raw test data attached to a snapshot. For structured snapshots, every row carries the resource refs and the raw JSON for that resource. For unstructured snapshots, a single row is returned with `resourceId` and `resourceType` set to `null` and `rawJson` containing the entire test-run JSON blob. */ +export interface VantaTestSnapshotRawTestDataRow { + /** Identifier of the underlying resource the row was captured from. Null for unstructured snapshots, which do not partition by resource. */ + resourceId: string | null; + /** Specific resource kind for the row (e.g. `AwsIamUser`). Null for unstructured snapshots. */ + resourceType: string | null; + /** Raw JSON payload as emitted by the test runner. Shape varies by `resourceType` for structured snapshots and matches the full test-run blob for unstructured snapshots. */ + rawJson: unknown; +} +export const VantaTestSnapshotRawTestDataRow = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.NullOr(S.String), + resourceType: S.NullOr(S.String), + rawJson: S.Unknown, + }), +).annotate({ + identifier: "VantaTestSnapshotRawTestDataRow", +}) as any as S.Schema; + +/** Raw test data captured at snapshot time. */ +export type VantaTestSnapshotEvidenceDetailRawTestDataList = + Array; +export const VantaTestSnapshotEvidenceDetailRawTestDataList = + /*@__PURE__*/ S.Array( + VantaTestSnapshotRawTestDataRow, + ) as any as S.Schema; + +export interface VantaTestSnapshotExcludedItem { + id: string; + displayName: string | null; +} +export const VantaTestSnapshotExcludedItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.NullOr(S.String), + }), +).annotate({ + identifier: "VantaTestSnapshotExcludedItem", +}) as any as S.Schema; + +export type VantaTestSnapshotExcludedItemGroupEntitiesList = + Array; +export const VantaTestSnapshotExcludedItemGroupEntitiesList = + /*@__PURE__*/ S.Array( + VantaTestSnapshotExcludedItem, + ) as any as S.Schema; + +export interface VantaTestSnapshotExcludedItemGroup { + reason: string; + entities: VantaTestSnapshotExcludedItemGroupEntitiesList; +} +export const VantaTestSnapshotExcludedItemGroup = /*@__PURE__*/ S.suspend(() => + S.Struct({ + reason: S.String, + entities: VantaTestSnapshotExcludedItemGroupEntitiesList, + }), +).annotate({ + identifier: "VantaTestSnapshotExcludedItemGroup", +}) as any as S.Schema; + +export type VantaTestSnapshotOutOfScopeResourcesTestLevelList = + Array; +export const VantaTestSnapshotOutOfScopeResourcesTestLevelList = + /*@__PURE__*/ S.Array( + VantaTestSnapshotExcludedItemGroup, + ) as any as S.Schema; + +export type VantaTestSnapshotFrameworkExclusionGroupedByReasonList = + Array; +export const VantaTestSnapshotFrameworkExclusionGroupedByReasonList = + /*@__PURE__*/ S.Array( + VantaTestSnapshotExcludedItemGroup, + ) as any as S.Schema; + +export interface VantaTestSnapshotFrameworkExclusion { + frameworkId: string; + frameworkName: string; + groupedByReason: VantaTestSnapshotFrameworkExclusionGroupedByReasonList; +} +export const VantaTestSnapshotFrameworkExclusion = /*@__PURE__*/ S.suspend(() => + S.Struct({ + frameworkId: S.String, + frameworkName: S.String, + groupedByReason: VantaTestSnapshotFrameworkExclusionGroupedByReasonList, + }), +).annotate({ + identifier: "VantaTestSnapshotFrameworkExclusion", +}) as any as S.Schema; + +export type VantaTestSnapshotOutOfScopeResourcesFrameworkLevelList = + Array; +export const VantaTestSnapshotOutOfScopeResourcesFrameworkLevelList = + /*@__PURE__*/ S.Array( + VantaTestSnapshotFrameworkExclusion, + ) as any as S.Schema; + +/** Resources excluded from the test at snapshot time, grouped by exclusion reason. `testLevel` contains resources the customer disabled for the test; `frameworkLevel` contains resources scoped out by the framework's segment configuration. */ +export interface VantaTestSnapshotOutOfScopeResources { + testLevel: VantaTestSnapshotOutOfScopeResourcesTestLevelList; + frameworkLevel: VantaTestSnapshotOutOfScopeResourcesFrameworkLevelList; +} +export const VantaTestSnapshotOutOfScopeResources = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + testLevel: VantaTestSnapshotOutOfScopeResourcesTestLevelList, + frameworkLevel: VantaTestSnapshotOutOfScopeResourcesFrameworkLevelList, + }), +).annotate({ + identifier: "VantaTestSnapshotOutOfScopeResources", +}) as any as S.Schema; + +/** A single API request captured during an API introspection test run. */ +export interface VantaTestSnapshotApiRequest { + id: string; + resourceType: string; + resourceTypeDisplayName: string; + requestMethod: string; + url: string; + responseCode: number; + timestamp: string; + dataTooLarge: boolean; +} +export const VantaTestSnapshotApiRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + resourceType: S.String, + resourceTypeDisplayName: S.String, + requestMethod: S.String, + url: S.String, + responseCode: S.Number, + timestamp: S.String, + dataTooLarge: S.Boolean, + }), +).annotate({ + identifier: "VantaTestSnapshotApiRequest", +}) as any as S.Schema; + +/** API requests captured during the test run. Absent when the snapshot data could not be loaded. Empty array when the test does not perform API introspection. */ +export type VantaTestSnapshotEvidenceDetailApiRequestsList = + Array; +export const VantaTestSnapshotEvidenceDetailApiRequestsList = + /*@__PURE__*/ S.Array( + VantaTestSnapshotApiRequest, + ) as any as S.Schema; + +/** Detail response for a captured automated-test snapshot evidence row. Combines the test-level metadata (description, integrations, SLA remediation) with a uniform raw-data array so external clients see the same shape regardless of whether the snapshot was structured or unstructured. */ +export interface VantaTestSnapshotEvidenceDetail { + /** The unique identifier for the test in Vanta's system. */ + testId: string; + /** The display name of the test. */ + testName: string; + /** A short description of what the test checks. */ + description: string; + /** Longer-form, formatted description of the test. Null when unset. */ + evaluationCriteria: string | null; + /** Integrations whose data feeds the test. */ + integrations: VantaTestSnapshotEvidenceDetailIntegrationsList; + /** SLA remediation policy attached to the test, or null when no SLA is set. */ + slaRemediation: VantaTestSnapshotSlaRemediation | null; + /** Raw test data captured at snapshot time. */ + rawTestData: VantaTestSnapshotEvidenceDetailRawTestDataList; + /** Resources excluded from the test at snapshot time. Absent when the snapshot data could not be loaded; clients should treat a missing field as "unknown" rather than "nothing excluded". */ + outOfScopeResources?: VantaTestSnapshotOutOfScopeResources; + /** API requests captured during the test run. Absent when the snapshot data could not be loaded. Empty array when the test does not perform API introspection. */ + apiRequests?: VantaTestSnapshotEvidenceDetailApiRequestsList; +} +export const VantaTestSnapshotEvidenceDetail = /*@__PURE__*/ S.suspend(() => + S.Struct({ + testId: S.String, + testName: S.String, + description: S.String, + evaluationCriteria: S.NullOr(S.String), + integrations: VantaTestSnapshotEvidenceDetailIntegrationsList, + slaRemediation: S.NullOr(VantaTestSnapshotSlaRemediation), + rawTestData: VantaTestSnapshotEvidenceDetailRawTestDataList, + outOfScopeResources: S.optional(VantaTestSnapshotOutOfScopeResources), + apiRequests: S.optional(VantaTestSnapshotEvidenceDetailApiRequestsList), + }), +).annotate({ + identifier: "VantaTestSnapshotEvidenceDetail", +}) as any as S.Schema; + +export interface GetOrganizationInformationRequest { + /** The audit ID */ + auditId: string; +} +export const GetOrganizationInformationRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/organization/information", + code: 200, + }), + ), +).annotate({ + identifier: "GetOrganizationInformationRequest", +}) as any as S.Schema; + +/** Company logo reference for an organization. */ +export interface AuditOrganizationCompanyLogo { + /** URL to download the company logo. */ + url: string; +} +export const AuditOrganizationCompanyLogo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + url: S.String, + }), +).annotate({ + identifier: "AuditOrganizationCompanyLogo", +}) as any as S.Schema; + +/** Organization information record returned by the auditor organization API. `id` and `displayName` are always present (primary fields). Other fields are optional to support controlled audits where only approved columns are returned. */ +export interface AuditOrganizationInformation { + /** Business info document identifier. */ + id: string; + /** Display name of the organization. */ + displayName: string; + /** Legal name of the organization. */ + legalName?: string | null; + /** Incorporation status. Returns "Incorporated in the United States" when the organization is a US company, or null otherwise. */ + incorporation?: string | null; + /** Organization URL. */ + url?: string | null; + /** Mailing address of the organization. */ + mailingAddress?: string | null; + /** Telephone number of the organization. */ + telephone?: string | null; + /** Company logo reference (download URL), or null if no logo is uploaded. */ + companyLogo?: AuditOrganizationCompanyLogo | null; +} +export const AuditOrganizationInformation = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.String, + legalName: S.optional(S.NullOr(S.String)), + incorporation: S.optional(S.NullOr(S.String)), + url: S.optional(S.NullOr(S.String)), + mailingAddress: S.optional(S.NullOr(S.String)), + telephone: S.optional(S.NullOr(S.String)), + companyLogo: S.optional(S.NullOr(AuditOrganizationCompanyLogo)), + }), +).annotate({ + identifier: "AuditOrganizationInformation", +}) as any as S.Schema; + +export interface GetOrganizationNotificationsRequest { + /** The audit ID */ + auditId: string; +} +export const GetOrganizationNotificationsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/organization/notifications", + code: 200, + }), + ), +).annotate({ + identifier: "GetOrganizationNotificationsRequest", +}) as any as S.Schema; + +/** Channels on which the personnel reminder digest is delivered (e.g. `["EMAIL"]` or `["EMAIL", "SLACK"]`). */ +export type AuditOrganizationNotificationsSubscribedChannelTypesList = + Array; +export const AuditOrganizationNotificationsSubscribedChannelTypesList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** A single external-notification subscription row returned by the auditor organization notifications API. Represents one mailing-list address + notification-category pairing. */ +export interface AuditOrganizationNotificationSubscription { + /** Subscription record identifier. */ + id: string; + /** Email address that receives notifications for this category. */ + address: string; + /** Cadence of summary notifications for this subscription, or null for non-summary (immediate / reminder) subscriptions. */ + cadence: string | null; + /** Notification category the subscription belongs to (e.g. `SUMMARY_EMPLOYEE`, `NEW_VENDORS_DISCOVERED_EMAIL`, `TRUST_REPORT_ACCESS_REQUEST_EMAIL`). */ + unsubSettingsKey: string; + /** Whether the address is currently subscribed to receive this category's notifications. */ + toggleIsSubscribed: boolean; +} +export const AuditOrganizationNotificationSubscription = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + address: S.String, + cadence: S.NullOr(S.String), + unsubSettingsKey: S.String, + toggleIsSubscribed: S.Boolean, + }), + ).annotate({ + identifier: "AuditOrganizationNotificationSubscription", + }) as any as S.Schema; + +/** External notification subscriptions — one row per mailing-list address plus category pairing. Covers Compliance, Vendors, Access Reviews, and Trust Center categories. */ +export type AuditOrganizationNotificationsExternalNotificationsList = + Array; +export const AuditOrganizationNotificationsExternalNotificationsList = + /*@__PURE__*/ S.Array( + AuditOrganizationNotificationSubscription, + ) as any as S.Schema; + +/** Organization notifications record returned by the auditor API. Ad-hoc single-row payload per domain mirroring the shape of the Organization → Notifications page. Only `id` is guaranteed; every other field is optional because controlled audit views can strip any column from the response. */ +export interface AuditOrganizationNotifications { + /** Domain identifier of the audited organization. */ + id: string; + /** IANA timezone identifier that determines when scheduled reminder notifications are sent. `null` means the organization has no configured preference ("Anytime" in the UI). */ + preferredTimeZone?: string | null; + /** Frequency at which personnel reminder digests are sent (e.g. `DAILY`, `WEEKLY`, or `NEVER`). `null` when no notification settings have been configured for the organization. */ + employeeDigestFrequency?: string | null; + /** Channels on which the personnel reminder digest is delivered (e.g. `["EMAIL"]` or `["EMAIL", "SLACK"]`). */ + subscribedChannelTypes?: AuditOrganizationNotificationsSubscribedChannelTypesList; + /** External notification subscriptions — one row per mailing-list address plus category pairing. Covers Compliance, Vendors, Access Reviews, and Trust Center categories. */ + externalNotifications?: AuditOrganizationNotificationsExternalNotificationsList; +} +export const AuditOrganizationNotifications = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + preferredTimeZone: S.optional(S.NullOr(S.String)), + employeeDigestFrequency: S.optional(S.NullOr(S.String)), + subscribedChannelTypes: S.optional( + AuditOrganizationNotificationsSubscribedChannelTypesList, + ), + externalNotifications: S.optional( + AuditOrganizationNotificationsExternalNotificationsList, + ), + }), +).annotate({ + identifier: "AuditOrganizationNotifications", +}) as any as S.Schema; + +export interface ListAccountAccessServicesRequest { + /** The audit ID */ + auditId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; +} +export const ListAccountAccessServicesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/personnel/account-access/services", + code: 200, + }), + ), +).annotate({ + identifier: "ListAccountAccessServicesRequest", +}) as any as S.Schema; + +/** An account access service (identity provider, access credential, or external application) connected to the organization. These represent credentials for integrations like Okta, Azure AD, Google Workspace, etc. that provide identity and access management data for personnel, as well as external applications that provide received user accounts. */ +export interface AccountAccessService { + /** Unique identifier for the service. */ + id: string; + /** Display name of the service shown to users. */ + credentialDisplayName: string; + /** The service name or integration ID. */ + service: string; + /** Sub-account identifier for multi-account integrations, or null if not applicable. */ + subAccountId: string | null; +} +export const AccountAccessService = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + credentialDisplayName: S.String, + service: S.String, + subAccountId: S.NullOr(S.String), + }), +).annotate({ + identifier: "AccountAccessService", +}) as any as S.Schema; + +export type PaginatedResponseAccountAccessServiceResultsDataList = + Array; +export const PaginatedResponseAccountAccessServiceResultsDataList = + /*@__PURE__*/ S.Array( + AccountAccessService, + ) as any as S.Schema; + +/** Provides information about the pagination of a dataset. */ +export interface PageInfo { + /** The cursor that points to the end of the current page, or null if there is no such cursor. */ + endCursor: string | null; + /** Indicates if there is another page after the current page. */ + hasNextPage: boolean; + /** Indicates if there is a page before the current page. */ + hasPreviousPage: boolean; + /** The cursor that points to the start of the current page, or null if there is no such cursor. */ + startCursor: string | null; +} +export const PageInfo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + endCursor: S.NullOr(S.String), + hasNextPage: S.Boolean, + hasPreviousPage: S.Boolean, + startCursor: S.NullOr(S.String), + }), +).annotate({ identifier: "PageInfo" }) as any as S.Schema; + +export interface PaginatedResponseAccountAccessServiceResults { + data: PaginatedResponseAccountAccessServiceResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseAccountAccessServiceResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseAccountAccessServiceResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseAccountAccessServiceResults", + }) as any as S.Schema; + +export interface PaginatedResponseAccountAccessService { + results: PaginatedResponseAccountAccessServiceResults; +} +export const PaginatedResponseAccountAccessService = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: PaginatedResponseAccountAccessServiceResults, + }), +).annotate({ + identifier: "PaginatedResponseAccountAccessService", +}) as any as S.Schema; + +export interface ListAuditCommentsRequest { + auditId: string; + pageSize?: number; + pageCursor?: string; + /** Includes all comments that have changed since changedSinceDate. */ + changedSinceDate?: string; +} +export const ListAuditCommentsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + changedSinceDate: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/audits/{auditId}/comments", code: 200 }), + ), +).annotate({ + identifier: "ListAuditCommentsRequest", +}) as any as S.Schema; + +export type PaginatedResponseCommentResultsDataList = Array; +export const PaginatedResponseCommentResultsDataList = /*@__PURE__*/ S.Array( + Comment, +) as any as S.Schema; + +export interface PaginatedResponseCommentResults { + data: PaginatedResponseCommentResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseCommentResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseCommentResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseCommentResults", +}) as any as S.Schema; + +export interface PaginatedResponseComment { + results: PaginatedResponseCommentResults; +} +export const PaginatedResponseComment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseCommentResults, + }), +).annotate({ + identifier: "PaginatedResponseComment", +}) as any as S.Schema; + +export type ListAuditControlsRequestExternalIdMatchesAnyList = Array; +export const ListAuditControlsRequestExternalIdMatchesAnyList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface ListAuditControlsRequest { + auditId: string; + pageSize?: number; + pageCursor?: string; + /** Filter controls whose externalId matches any of the provided values (exact, case-sensitive match). */ + externalIdMatchesAny?: ListAuditControlsRequestExternalIdMatchesAnyList; +} +export const ListAuditControlsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + externalIdMatchesAny: S.optional( + ListAuditControlsRequestExternalIdMatchesAnyList.pipe(T.Query()), + ), + }).pipe( + T.Http({ method: "GET", uri: "/audits/{auditId}/controls", code: 200 }), + ), +).annotate({ + identifier: "ListAuditControlsRequest", +}) as any as S.Schema; + +/** The security domains that the control belongs to. */ +export type AuditorControlDomainsList = Array; +export const AuditorControlDomainsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** The control's custom field values, if control custom fields is included in your Vanta instance. */ +export type AuditorControlCustomFieldsList = Array; +export const AuditorControlCustomFieldsList = /*@__PURE__*/ S.Array( + CustomField, +) as any as S.Schema; + +export interface SectionPrinciple { + /** The principle's unique ID. */ + id: string; + /** The principle's name. */ + name: string; +} +export const SectionPrinciple = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + }), +).annotate({ + identifier: "SectionPrinciple", +}) as any as S.Schema; + +export interface Section { + /** The section name */ + name: string; + /** The section framework */ + framework: string; + /** The principle that groups this section, if any. */ + principle: SectionPrinciple | null; +} +export const Section = /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + framework: S.String, + principle: S.NullOr(SectionPrinciple), + }), +).annotate({ identifier: "Section" }) as any as S.Schema
; + +/** Sections of a framework that this control satisfies */ +export type AuditorControlSectionsList = Array
; +export const AuditorControlSectionsList = /*@__PURE__*/ S.Array( + Section, +) as any as S.Schema; + +/** Audit segments this control is in scope for. Empty when the control is attached only by a direct link and has no catalog mapping on a multi-program audit. */ +export type AuditorControlInScopeSegmentIdsList = Array; +export const AuditorControlInScopeSegmentIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** An auditor's assessment of a control within an audit. This is the full flat union of every framework's assessment states (the superset); a given audit's framework only uses its own subset. `NOT_ASSESSED` is shared by all frameworks and is the default for a control that has not yet been assessed. Which states apply to which framework: - Most frameworks (e.g. SOC 2): `IN_PLACE`, `NOT_IN_PLACE`, `PARTIAL`, `NOT_ASSESSED` - ISO 27001: `CONFORMING`, `MINOR_NON_CONFORMITY`, `MAJOR_NON_CONFORMITY`, `NOT_ASSESSED` - FedRAMP: `SATISFIED`, `NOT_SATISFIED`, `OTHER_THAN_SATISFIED`, `NOT_ASSESSED` - FedRAMP Key Security Indicators (KSI): `TRUE`, `FALSE`, `PARTIAL`, `NOT_ASSESSED` Distinct from `ControlStatus`, which is the computed tests/documents-passing status — a different concept. */ +export type AuditControlAssessmentState = + | "IN_PLACE" + | "NOT_IN_PLACE" + | "PARTIAL" + | "NOT_ASSESSED" + | "CONFORMING" + | "MINOR_NON_CONFORMITY" + | "MAJOR_NON_CONFORMITY" + | "SATISFIED" + | "NOT_SATISFIED" + | "OTHER_THAN_SATISFIED" + | "TRUE" + | "FALSE"; +export const AuditControlAssessmentState = /*@__PURE__*/ S.String; + +/** An auditor's assessment of a control within one segment of an audit. Assessments are keyed per segment, so a control in scope for more than one segment (a multi-framework audit) can carry a distinct assessment per segment. A segment with no recorded assessment coerces to `NOT_ASSESSED` with a `null` justification. */ +export interface AuditControlAssessment { + /** The audit program segment this assessment belongs to. */ + segmentId: string; + /** The auditor's assessment of the control for this segment; `NOT_ASSESSED` when no assessment has been recorded. */ + assessmentState: AuditControlAssessmentState; + /** Free-text reasoning for the assessment; `null` when none has been recorded. */ + justification: string | null; +} +export const AuditControlAssessment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + segmentId: S.String, + assessmentState: AuditControlAssessmentState, + justification: S.NullOr(S.String), + }), +).annotate({ + identifier: "AuditControlAssessment", +}) as any as S.Schema; + +/** The auditor's assessments of this control, one per audit program segment the control is in scope for (a multi-framework audit can have more than one). Populated only for IRL audits when the assessment feature is enabled; empty otherwise. Within an in-scope segment a control with no recorded assessment coerces to `NOT_ASSESSED`; a segment the control is not in scope for contributes no entry. */ +export type AuditorControlAssessmentsList = Array; +export const AuditorControlAssessmentsList = /*@__PURE__*/ S.Array( + AuditControlAssessment, +) as any as S.Schema; + +export interface AuditorControl { + /** The control's unique ID. */ + id: string; + /** The control's external ID. */ + externalId: string | null; + /** The control's name. */ + name: string; + /** The control's description. */ + description: string; + /** The control's source, either "VANTA" or "CUSTOM". */ + source: ControlSource; + /** The security domains that the control belongs to. */ + domains: AuditorControlDomainsList; + /** The control's owner. */ + owner: Owner | null; + /** The control's GDPR role, if the control is a GDPR control. */ + role?: string | null; + /** The control's custom field values, if control custom fields is included in your Vanta instance. */ + customFields: AuditorControlCustomFieldsList; + /** When the control was created. Returns null for Vanta library controls. */ + creationDate: string | null; + /** When the control was last modified. Returns null for Vanta library controls. */ + modificationDate: string | null; + /** The report standard framework fulfilled by the control. Incomplete once a control is in scope for more than one framework. */ + framework: string; + /** Sections of a framework that this control satisfies */ + sections: AuditorControlSectionsList; + /** Audit segments this control is in scope for. Empty when the control is attached only by a direct link and has no catalog mapping on a multi-program audit. */ + inScopeSegmentIds: AuditorControlInScopeSegmentIdsList; + /** The auditor's assessments of this control, one per audit program segment the control is in scope for (a multi-framework audit can have more than one). Populated only for IRL audits when the assessment feature is enabled; empty otherwise. Within an in-scope segment a control with no recorded assessment coerces to `NOT_ASSESSED`; a segment the control is not in scope for contributes no entry. */ + assessments: AuditorControlAssessmentsList; +} +export const AuditorControl = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + externalId: S.NullOr(S.String), + name: S.String, + description: S.String, + source: ControlSource, + domains: AuditorControlDomainsList, + owner: S.NullOr(Owner), + role: S.optional(S.NullOr(S.String)), + customFields: AuditorControlCustomFieldsList, + creationDate: S.NullOr(S.String), + modificationDate: S.NullOr(S.String), + framework: S.String, + sections: AuditorControlSectionsList, + inScopeSegmentIds: AuditorControlInScopeSegmentIdsList, + assessments: AuditorControlAssessmentsList, + }), +).annotate({ identifier: "AuditorControl" }) as any as S.Schema; + +export type PaginatedResponseAuditorControlResultsDataList = + Array; +export const PaginatedResponseAuditorControlResultsDataList = + /*@__PURE__*/ S.Array( + AuditorControl, + ) as any as S.Schema; + +export interface PaginatedResponseAuditorControlResults { + data: PaginatedResponseAuditorControlResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseAuditorControlResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseAuditorControlResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseAuditorControlResults", +}) as any as S.Schema; + +export interface PaginatedResponseAuditorControl { + results: PaginatedResponseAuditorControlResults; +} +export const PaginatedResponseAuditorControl = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseAuditorControlResults, + }), +).annotate({ + identifier: "PaginatedResponseAuditorControl", +}) as any as S.Schema; + +export interface ListAuditEvidenceRequest { + auditId: string; + pageSize?: number; + pageCursor?: string; + /** Includes all audit evidence that have changed since changedSinceDate. */ + changedSinceDate?: string; +} +export const ListAuditEvidenceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + changedSinceDate: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/audits/{auditId}/evidence", code: 200 }), + ), +).annotate({ + identifier: "ListAuditEvidenceRequest", +}) as any as S.Schema; + +export type PaginatedResponseEvidenceResultsDataList = Array; +export const PaginatedResponseEvidenceResultsDataList = /*@__PURE__*/ S.Array( + Evidence, +) as any as S.Schema; + +export interface PaginatedResponseEvidenceResults { + data: PaginatedResponseEvidenceResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseEvidenceResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseEvidenceResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseEvidenceResults", +}) as any as S.Schema; + +export interface PaginatedResponseEvidence { + results: PaginatedResponseEvidenceResults; +} +export const PaginatedResponseEvidence = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseEvidenceResults, + }), +).annotate({ + identifier: "PaginatedResponseEvidence", +}) as any as S.Schema; + +export interface ListAuditEvidenceUrlsRequest { + auditId: string; + auditEvidenceId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListAuditEvidenceUrlsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + auditEvidenceId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/evidence/{auditEvidenceId}/urls", + code: 200, + }), + ), +).annotate({ + identifier: "ListAuditEvidenceUrlsRequest", +}) as any as S.Schema; + +export interface EvidenceUrl { + /** Vanta internal reference to evidence */ + id: string; + /** Pre-signed S3 URL for evidence */ + url: string; + /** File name of evidence */ + filename: string; + /** Set to true if this is a presigned s3 url. Set to false if this is a customer uploaded link */ + isDownloadable: boolean; + /** MIME type of the evidence file (e.g., "application/pdf", "image/png") */ + mimeType: string | null; +} +export const EvidenceUrl = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + url: S.String, + filename: S.String, + isDownloadable: S.Boolean, + mimeType: S.NullOr(S.String), + }), +).annotate({ identifier: "EvidenceUrl" }) as any as S.Schema; + +export type PaginatedResponseEvidenceUrlResultsDataList = Array; +export const PaginatedResponseEvidenceUrlResultsDataList = + /*@__PURE__*/ S.Array( + EvidenceUrl, + ) as any as S.Schema; + +export interface PaginatedResponseEvidenceUrlResults { + data: PaginatedResponseEvidenceUrlResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseEvidenceUrlResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseEvidenceUrlResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseEvidenceUrlResults", +}) as any as S.Schema; + +export interface PaginatedResponseEvidenceUrl { + results: PaginatedResponseEvidenceUrlResults; +} +export const PaginatedResponseEvidenceUrl = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseEvidenceUrlResults, + }), +).annotate({ + identifier: "PaginatedResponseEvidenceUrl", +}) as any as S.Schema; + +export type ListAuditIssuesRequestSnapshotIdMatchesAnyList = Array; +export const ListAuditIssuesRequestSnapshotIdMatchesAnyList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** Allowed values for the `orderBy` query parameter on issue snapshot item endpoints. */ +export type IssueSnapshotItemOrderBy = + | "createdAt" + | "lastModifiedAt" + | "detectedAt"; +export const IssueSnapshotItemOrderBy = /*@__PURE__*/ S.String; + +/** `"asc"` for ascending, `"desc"` for descending. */ +export type OrderDirection = "asc" | "desc"; +export const OrderDirection = /*@__PURE__*/ S.String; + +export interface ListAuditIssuesRequest { + /** The audit ID */ + auditId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; + /** Search term for filtering by issue title and description */ + search?: string; + /** Filter issues to specific snapshots by snapshot ID */ + snapshotIdMatchesAny?: ListAuditIssuesRequestSnapshotIdMatchesAnyList; + /** Filter to issues created on or after this date (ISO 8601) */ + createdAfterDate?: string; + /** Filter to issues created on or before this date (ISO 8601) */ + createdBeforeDate?: string; + /** Filter to issues detected on or after this date (ISO 8601) */ + detectedAfterDate?: string; + /** Filter to issues detected on or before this date (ISO 8601) */ + detectedBeforeDate?: string; + /** Field to sort results by. Allowed: "createdAt", "lastModifiedAt", "detectedAt". Default: "createdAt" */ + orderBy?: IssueSnapshotItemOrderBy | (string & {}); + /** Sort direction: "asc" or "desc". Default: "desc" */ + orderDirection?: OrderDirection | (string & {}); +} +export const ListAuditIssuesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + snapshotIdMatchesAny: S.optional( + ListAuditIssuesRequestSnapshotIdMatchesAnyList.pipe(T.Query()), + ), + createdAfterDate: S.optional(S.String.pipe(T.Query())), + createdBeforeDate: S.optional(S.String.pipe(T.Query())), + detectedAfterDate: S.optional(S.String.pipe(T.Query())), + detectedBeforeDate: S.optional(S.String.pipe(T.Query())), + orderBy: S.optional(IssueSnapshotItemOrderBy.pipe(T.Query())), + orderDirection: S.optional(OrderDirection.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/audits/{auditId}/issues/items", code: 200 }), + ), +).annotate({ + identifier: "ListAuditIssuesRequest", +}) as any as S.Schema; + +export type IssueStatusTypeForSnapshot = + | "IN_PROGRESS" + | "NOT_STARTED" + | "PENDING_REVIEW" + | "CLOSED"; +export const IssueStatusTypeForSnapshot = /*@__PURE__*/ S.String; + +/** Approval progress for an issue at the time the snapshot was captured. */ +export interface IssueSnapshotItemApprovalProgress { + /** The number of approvers who have approved the issue. */ + approvedCount: number; + /** The total number of approvers in the issue's approval chain. */ + totalApprovers: number; +} +export const IssueSnapshotItemApprovalProgress = /*@__PURE__*/ S.suspend(() => + S.Struct({ + approvedCount: S.Number, + totalApprovers: S.Number, + }), +).annotate({ + identifier: "IssueSnapshotItemApprovalProgress", +}) as any as S.Schema; + +export interface IssueSnapshotItem { + /** The unique identifier for the snapshot of an issue. This is distinct from the issueId, which identifies the underlying issue across snapshots. The snapshot item ID is unique to this specific snapshot of the issue. */ + id: string; + /** The issue title */ + title?: string; + /** The issue description */ + description?: string; + /** The human-readable identifier for the issue. This field is unique per-domain, and can be used to correlate this issue snapshot item to the underlying issue across different snapshots. */ + readableIssueId: string; + /** The globally unique identifier for the underlying issue across snapshots. This field can be used to correlate this snapshot item to the underlying issue across different snapshots. */ + issueId: string; + /** The identifier for the snapshot this issue item belongs to. */ + snapshotId: string; + /** The due date for the issue. */ + dueDate?: string | null; + /** The status of the issue. */ + status?: IssueStatusTypeForSnapshot; + /** The issue's approval progress at the time the snapshot was captured, or null if no approval was in progress or issue approvals are not enabled. */ + approvalProgress?: IssueSnapshotItemApprovalProgress | null; + /** The date and time when the issue was last modified. */ + lastModifiedAt?: string; + /** The date and time when the issue was created. */ + createdAt?: string; + /** The date and time when the issue was detected. */ + detectedAt?: string; +} +export const IssueSnapshotItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + title: S.optional(S.String), + description: S.optional(S.String), + readableIssueId: S.String, + issueId: S.String, + snapshotId: S.String, + dueDate: S.optional(S.NullOr(S.String)), + status: S.optional(IssueStatusTypeForSnapshot), + approvalProgress: S.optional(S.NullOr(IssueSnapshotItemApprovalProgress)), + lastModifiedAt: S.optional(S.String), + createdAt: S.optional(S.String), + detectedAt: S.optional(S.String), + }), +).annotate({ + identifier: "IssueSnapshotItem", +}) as any as S.Schema; + +export type PaginatedResponseIssueSnapshotItemResultsDataList = + Array; +export const PaginatedResponseIssueSnapshotItemResultsDataList = + /*@__PURE__*/ S.Array( + IssueSnapshotItem, + ) as any as S.Schema; + +export interface PaginatedResponseIssueSnapshotItemResults { + data: PaginatedResponseIssueSnapshotItemResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseIssueSnapshotItemResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseIssueSnapshotItemResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseIssueSnapshotItemResults", + }) as any as S.Schema; + +export interface PaginatedResponseIssueSnapshotItem { + results: PaginatedResponseIssueSnapshotItemResults; +} +export const PaginatedResponseIssueSnapshotItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseIssueSnapshotItemResults, + }), +).annotate({ + identifier: "PaginatedResponseIssueSnapshotItem", +}) as any as S.Schema; + +export type RiskOrderBy = + | "inherentRisk" + | "riskId" + | "riskScenario" + | "treatment" + | "residualRisk" + | "reviewStatus" + | "owner" + | "categories" + | "ciaCategories" + | "identified"; +export const RiskOrderBy = /*@__PURE__*/ S.String; + +export interface ListAuditRisksRequest { + /** The audit ID */ + auditId: string; + /** The risk assessment snapshot ID */ + snapshotId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; + /** Search term for filtering by risk scenario description */ + search?: string; + /** Field to sort results by. Allowed: "riskId", "riskScenario", "inherentRisk", "treatment", "residualRisk", "reviewStatus", "owner", "categories", "ciaCategories", "identified". Default: "identified" */ + orderBy?: RiskOrderBy | (string & {}); + /** Sort direction: "asc" or "desc". Default: "desc" */ + orderDirection?: OrderDirection | (string & {}); +} +export const ListAuditRisksRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + snapshotId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + orderBy: S.optional(RiskOrderBy.pipe(T.Query())), + orderDirection: S.optional(OrderDirection.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/risks/{snapshotId}", + code: 200, + }), + ), +).annotate({ + identifier: "ListAuditRisksRequest", +}) as any as S.Schema; + +/** Risk treatment strategy returned by the auditor API. */ +export type AuditRiskTreatment = "ACCEPT" | "AVOID" | "MITIGATE" | "TRANSFER"; +export const AuditRiskTreatment = /*@__PURE__*/ S.String; + +/** Treatment implementation status returned by the auditor API. */ +export type AuditRiskTreatmentStatus = "IN_PROGRESS" | "DONE"; +export const AuditRiskTreatmentStatus = /*@__PURE__*/ S.String; + +/** Risk scenario review status returned by the auditor API. */ +export type AuditRiskReviewStatus = + | "APPROVED" + | "DRAFT" + | "NOT_REVIEWED" + | "AWAITING_SUBMISSION" + | "PENDING_APPROVAL" + | "REQUESTED_CHANGES"; +export const AuditRiskReviewStatus = /*@__PURE__*/ S.String; + +/** Owner information for a risk. */ +export interface AuditRiskOwner { + /** Display name of the risk owner. */ + displayName: string; + /** URL of the owner's profile image, or null if not available. */ + imageUrl: string | null; +} +export const AuditRiskOwner = /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + imageUrl: S.NullOr(S.String), + }), +).annotate({ identifier: "AuditRiskOwner" }) as any as S.Schema; + +/** Risk category names, or empty array if not categorized. */ +export type AuditRiskCategoriesList = Array; +export const AuditRiskCategoriesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** CIA triad category returned by the auditor API. */ +export type AuditRiskCia = "AVAILABILITY" | "CONFIDENTIALITY" | "INTEGRITY"; +export const AuditRiskCia = /*@__PURE__*/ S.String; + +/** CIA triad categories, or empty array if not categorized. */ +export type AuditRiskCiaCategoriesList = Array; +export const AuditRiskCiaCategoriesList = /*@__PURE__*/ S.Array( + AuditRiskCia, +) as any as S.Schema; + +/** IDs of controls linked to this risk scenario, or empty array if none. Full Audit View only - omitted in Controlled Audit View. */ +export type AuditRiskLinkedControlIdsList = Array; +export const AuditRiskLinkedControlIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** A risk record from the risk population. `id` and `riskId` are required. All other fields are optional to support customizable field visibility. Omitted keys mean the column is not in the response; `null` means the column is present but empty. */ +export interface AuditRisk { + /** Unique identifier for the risk scenario version. */ + id: string; + /** Custom risk ID (e.g., "RISK-001"), or null if not available. */ + riskId: string | null; + /** Description of the risk scenario, or null if not available. */ + riskScenario?: string | null; + /** Likelihood score of the risk, or null if not scored. Full Audit View only - omitted in Controlled Audit View. */ + likelihood?: number | null; + /** Impact score of the risk, or null if not scored. Full Audit View only - omitted in Controlled Audit View. */ + impact?: number | null; + /** Inherent risk score, or null if not scored. Defaults to the likelihood * impact product; when the organization scores risks by factors, this is the rolled-up factor score rounded to two decimals. */ + inherentRisk?: number | null; + /** Risk treatment strategy, or null if not set. */ + treatment?: AuditRiskTreatment | null; + /** Treatment implementation status, or null if not set. */ + treatmentStatus?: AuditRiskTreatmentStatus | null; + /** Residual risk score after treatment, or null if not calculable. */ + residualRisk?: number | null; + /** Review status of the risk scenario, or null if not set. */ + reviewStatus?: AuditRiskReviewStatus | null; + /** Risk owner information, or null if no owner assigned. */ + owner?: AuditRiskOwner | null; + /** Risk category names, or empty array if not categorized. */ + categories?: AuditRiskCategoriesList; + /** CIA triad categories, or empty array if not categorized. */ + ciaCategories?: AuditRiskCiaCategoriesList; + /** IDs of controls linked to this risk scenario, or empty array if none. Full Audit View only - omitted in Controlled Audit View. */ + linkedControlIds?: AuditRiskLinkedControlIdsList; + /** When the risk was identified, or null if not recorded. ISO 8601 format. */ + identified?: string | null; +} +export const AuditRisk = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + riskId: S.NullOr(S.String), + riskScenario: S.optional(S.NullOr(S.String)), + likelihood: S.optional(S.NullOr(S.Number)), + impact: S.optional(S.NullOr(S.Number)), + inherentRisk: S.optional(S.NullOr(S.Number)), + treatment: S.optional(S.NullOr(AuditRiskTreatment)), + treatmentStatus: S.optional(S.NullOr(AuditRiskTreatmentStatus)), + residualRisk: S.optional(S.NullOr(S.Number)), + reviewStatus: S.optional(S.NullOr(AuditRiskReviewStatus)), + owner: S.optional(S.NullOr(AuditRiskOwner)), + categories: S.optional(AuditRiskCategoriesList), + ciaCategories: S.optional(AuditRiskCiaCategoriesList), + linkedControlIds: S.optional(AuditRiskLinkedControlIdsList), + identified: S.optional(S.NullOr(S.String)), + }), +).annotate({ identifier: "AuditRisk" }) as any as S.Schema; + +export type PaginatedResponseAuditRiskResultsDataList = Array; +export const PaginatedResponseAuditRiskResultsDataList = /*@__PURE__*/ S.Array( + AuditRisk, +) as any as S.Schema; + +export interface PaginatedResponseAuditRiskResults { + data: PaginatedResponseAuditRiskResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseAuditRiskResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseAuditRiskResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseAuditRiskResults", +}) as any as S.Schema; + +export interface PaginatedResponseAuditRisk { + results: PaginatedResponseAuditRiskResults; +} +export const PaginatedResponseAuditRisk = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseAuditRiskResults, + }), +).annotate({ + identifier: "PaginatedResponseAuditRisk", +}) as any as S.Schema; + +export interface ListAuditsRequest { + pageSize?: number; + pageCursor?: string; + /** Includes all audits that have changed since changedSinceDate. */ + changedSinceDate?: string; + /** Includes only audits with no audit report uploaded */ + isActiveAudit?: boolean; +} +export const ListAuditsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + changedSinceDate: S.optional(S.String.pipe(T.Query())), + isActiveAudit: S.optional(S.Boolean.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/audits", code: 200 })), +).annotate({ + identifier: "ListAuditsRequest", +}) as any as S.Schema; + +export type PaginatedResponseAuditResultsDataList = Array; +export const PaginatedResponseAuditResultsDataList = /*@__PURE__*/ S.Array( + Audit, +) as any as S.Schema; + +export interface PaginatedResponseAuditResults { + data: PaginatedResponseAuditResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseAuditResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseAuditResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseAuditResults", +}) as any as S.Schema; + +export interface PaginatedResponseAudit { + results: PaginatedResponseAuditResults; +} +export const PaginatedResponseAudit = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseAuditResults, + }), +).annotate({ + identifier: "PaginatedResponseAudit", +}) as any as S.Schema; + +export interface ListAuditSnapshotsRequest { + /** The audit ID */ + auditId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; + /** Search term for filtering by snapshot title and description */ + search?: string; +} +export const ListAuditSnapshotsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/issues/snapshots", + code: 200, + }), + ), +).annotate({ + identifier: "ListAuditSnapshotsRequest", +}) as any as S.Schema; + +export interface IssueSnapshotMetadata { + /** The unique identifier for the issue snapshot. */ + id: string; + /** The title of the snapshot */ + title?: string; + /** The description of the snapshot */ + description?: string; + /** The date and time when the snapshot was created. */ + createdAt?: string; +} +export const IssueSnapshotMetadata = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + title: S.optional(S.String), + description: S.optional(S.String), + createdAt: S.optional(S.String), + }), +).annotate({ + identifier: "IssueSnapshotMetadata", +}) as any as S.Schema; + +export type PaginatedResponseIssueSnapshotMetadataResultsDataList = + Array; +export const PaginatedResponseIssueSnapshotMetadataResultsDataList = + /*@__PURE__*/ S.Array( + IssueSnapshotMetadata, + ) as any as S.Schema; + +export interface PaginatedResponseIssueSnapshotMetadataResults { + data: PaginatedResponseIssueSnapshotMetadataResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseIssueSnapshotMetadataResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseIssueSnapshotMetadataResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseIssueSnapshotMetadataResults", + }) as any as S.Schema; + +export interface PaginatedResponseIssueSnapshotMetadata { + results: PaginatedResponseIssueSnapshotMetadataResults; +} +export const PaginatedResponseIssueSnapshotMetadata = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: PaginatedResponseIssueSnapshotMetadataResults, + }), +).annotate({ + identifier: "PaginatedResponseIssueSnapshotMetadata", +}) as any as S.Schema; + +/** Version control source service name for code changes. */ +export type ApiCodeChangeSource = + | "github" + | "gitlab" + | "bitbucket" + | "azuredevops"; +export const ApiCodeChangeSource = /*@__PURE__*/ S.String; + +export type ListCodeChangesRequestSourcesMatchesAnyList = Array< + ApiCodeChangeSource | (string & {}) +>; +export const ListCodeChangesRequestSourcesMatchesAnyList = + /*@__PURE__*/ S.Array( + ApiCodeChangeSource, + ) as any as S.Schema; + +export interface ListCodeChangesRequest { + /** The audit ID */ + auditId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; + /** Search term for filtering by code change title or repository name */ + search?: string; + /** Filter code changes by version control source (accepted values: github, gitlab, bitbucket, azuredevops) */ + sourcesMatchesAny?: ListCodeChangesRequestSourcesMatchesAnyList; + /** Filter code changes closed on or after this date (ISO 8601) */ + closedAfterDate?: string; + /** Filter code changes closed on or before this date (ISO 8601) */ + closedBeforeDate?: string; +} +export const ListCodeChangesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + sourcesMatchesAny: S.optional( + ListCodeChangesRequestSourcesMatchesAnyList.pipe(T.Query()), + ), + closedAfterDate: S.optional(S.String.pipe(T.Query())), + closedBeforeDate: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/assets/code-changes", + code: 200, + }), + ), +).annotate({ + identifier: "ListCodeChangesRequest", +}) as any as S.Schema; + +/** Code change data. `id` and `codeChange` are required. All other fields are optional to support customizable field visibility. Omitted keys mean the column is not in the response; `null` means the column is present but empty. */ +export interface CodeChange { + /** Code change record ID - always present. */ + id: string; + /** Code change title (e.g. PR title) - always present. */ + codeChange: string; + /** Code change identifier (e.g. PR number). */ + identifier?: string; + /** Version control source where the change originated. Known values are listed in {@link ApiCodeChangeSource}; other strings may appear if a new source is onboarded before this enum is updated. */ + service?: string; + /** Repository name. */ + repository?: string; + /** Date the code change was opened. */ + openedAt?: string; + /** Date the code change was merged/closed. */ + closedAt?: string; +} +export const CodeChange = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + codeChange: S.String, + identifier: S.optional(S.String), + service: S.optional(S.String), + repository: S.optional(S.String), + openedAt: S.optional(S.String), + closedAt: S.optional(S.String), + }), +).annotate({ identifier: "CodeChange" }) as any as S.Schema; + +export type PaginatedResponseCodeChangeResultsDataList = Array; +export const PaginatedResponseCodeChangeResultsDataList = /*@__PURE__*/ S.Array( + CodeChange, +) as any as S.Schema; + +export interface PaginatedResponseCodeChangeResults { + data: PaginatedResponseCodeChangeResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseCodeChangeResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseCodeChangeResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseCodeChangeResults", +}) as any as S.Schema; + +export interface PaginatedResponseCodeChange { + results: PaginatedResponseCodeChangeResults; +} +export const PaginatedResponseCodeChange = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseCodeChangeResults, + }), +).annotate({ + identifier: "PaginatedResponseCodeChange", +}) as any as S.Schema; + +export interface ListCommentsForControlRequest { + auditId: string; + controlId: string; + /** Maximum number of comments to return per page. */ + pageSize?: number; + /** Pagination cursor from a previous response. Provide to fetch the next page of comments. */ + pageCursor?: string; + /** Includes all comments that have changed since changedSinceDate. Considers creationDate, modificationDate, and deletionDate timestamps when determining changes. */ + changedSinceDate?: string; +} +export const ListCommentsForControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + controlId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + changedSinceDate: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/controls/{controlId}/comments", + code: 200, + }), + ), +).annotate({ + identifier: "ListCommentsForControlRequest", +}) as any as S.Schema; + +export type PaginatedResponseAuditControlCommentResultsDataList = + Array; +export const PaginatedResponseAuditControlCommentResultsDataList = + /*@__PURE__*/ S.Array( + AuditControlComment, + ) as any as S.Schema; + +export interface PaginatedResponseAuditControlCommentResults { + data: PaginatedResponseAuditControlCommentResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseAuditControlCommentResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseAuditControlCommentResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseAuditControlCommentResults", + }) as any as S.Schema; + +export interface PaginatedResponseAuditControlComment { + results: PaginatedResponseAuditControlCommentResults; +} +export const PaginatedResponseAuditControlComment = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: PaginatedResponseAuditControlCommentResults, + }), +).annotate({ + identifier: "PaginatedResponseAuditControlComment", +}) as any as S.Schema; + +export interface ListCommentsForInformationRequestRequest { + auditId: string; + requestId: string; + /** Maximum number of comments to return per page. */ + pageSize?: number; + /** Pagination cursor from a previous response. Provide to fetch the next page of comments. */ + pageCursor?: string; + /** Includes all comments that have changed since changedSinceDate. Considers creationDate, modificationDate, and deletionDate timestamps when determining changes. */ + changedSinceDate?: string; +} +export const ListCommentsForInformationRequestRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + changedSinceDate: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/information-requests/{requestId}/comments", + code: 200, + }), + ), +).annotate({ + identifier: "ListCommentsForInformationRequestRequest", +}) as any as S.Schema; + +export type PaginatedResponseInformationRequestCommentResultsDataList = + Array; +export const PaginatedResponseInformationRequestCommentResultsDataList = + /*@__PURE__*/ S.Array( + InformationRequestComment, + ) as any as S.Schema; + +export interface PaginatedResponseInformationRequestCommentResults { + data: PaginatedResponseInformationRequestCommentResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseInformationRequestCommentResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseInformationRequestCommentResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseInformationRequestCommentResults", + }) as any as S.Schema; + +export interface PaginatedResponseInformationRequestComment { + results: PaginatedResponseInformationRequestCommentResults; +} +export const PaginatedResponseInformationRequestComment = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseInformationRequestCommentResults, + }), + ).annotate({ + identifier: "PaginatedResponseInformationRequestComment", + }) as any as S.Schema; + +export interface ListInformationRequestActivityRequest { + auditId: string; + requestId: string; + /** Maximum number of activity entries to return per page. */ + pageSize?: number; + /** Pagination cursor from a previous response. Provide to fetch the next page of activity logs. */ + pageCursor?: string; + /** Includes activity logs that have changed since changedSinceDate. */ + changedSinceDate?: string; +} +export const ListInformationRequestActivityRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + changedSinceDate: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/information-requests/{requestId}/activity", + code: 200, + }), + ), +).annotate({ + identifier: "ListInformationRequestActivityRequest", +}) as any as S.Schema; + +export type InformationRequestActivityType = + | "AUDIT_DUPLICATION_AUDIT_TRAIL" + | "AUDIT_INFORMATION_REQUEST_EVIDENCE_FILL" + | "CHANGE_STATUS" + | "EDIT_REQUEST" + | "REMOVE_EVIDENCE" + | "SHARE_EVIDENCE_WITH_AUDITOR" + | "UPLOAD_EVIDENCE"; +export const InformationRequestActivityType = /*@__PURE__*/ S.String; + +/** Previous approval status before the status change. Only populated for status change activities. Null for all other activity types. */ +export type InformationRequestActivityLogOldStatus = + | "READY_FOR_AUDIT" + | "NEEDS_EVIDENCE" + | "AUDITOR_APPROVED" + | "AUDITOR_FLAGGED" + | "READY_FOR_INTERNAL_REVIEW"; +export const InformationRequestActivityLogOldStatus = /*@__PURE__*/ S.String; + +/** New approval status after the status change. Only populated for status change activities. Null for all other activity types. */ +export type InformationRequestActivityLogNewStatus = + | "READY_FOR_AUDIT" + | "NEEDS_EVIDENCE" + | "AUDITOR_APPROVED" + | "AUDITOR_FLAGGED" + | "READY_FOR_INTERNAL_REVIEW"; +export const InformationRequestActivityLogNewStatus = /*@__PURE__*/ S.String; + +export type EvidenceFillOutcome = "SUCCESS" | "PARTIAL" | "FAILED"; +export const EvidenceFillOutcome = /*@__PURE__*/ S.String; + +/** Activity log entry tracking changes and actions on an information request. The activity log provides a complete audit trail of all operations performed on an information request, including status changes, evidence uploads, edits, and evidence sharing. This enables tracking compliance activities and understanding the request's history. */ +export interface InformationRequestActivityLog { + /** The unique identifier for the activity log entry within Vanta's system. Format: ObjectId as a string (e.g., "6890e473dce1da5d8406f5e7"). */ + id: string; + /** Type of activity that occurred on the information request. Determines which additional fields are populated. */ + activityType: InformationRequestActivityType; + /** Timestamp when the activity occurred. Format: ISO 8601 UTC timestamp. */ + timestamp: string; + /** Email address of the user who performed the activity. Null for system-generated activities (rare, such as automated status changes). This email uniquely identifies users across systems. */ + userEmail: string | null; + /** Previous approval status before the status change. Only populated for status change activities. Null for all other activity types. */ + oldStatus: InformationRequestActivityLogOldStatus | null; + /** New approval status after the status change. Only populated for status change activities. Null for all other activity types. */ + newStatus: InformationRequestActivityLogNewStatus | null; + /** Optional explanation for the status change. Only populated for status change activities when a reason is provided (e.g., when flagging evidence). Null for all other cases. */ + reason: string | null; + /** Result of an automated evidence fill. Only populated for evidence fill activities. Null for all other activity types. */ + fillOutcome: EvidenceFillOutcome | null; + /** Identifier of the information request this one was copied from when its audit was duplicated. Only populated for audit-duplication trail activities. Null for all other activity types. Format: ObjectId as a string. */ + sourceInformationRequestId: string | null; + /** Identifier of the audit this request's audit was duplicated from. Only populated for audit-duplication trail activities. Null for all other activity types. Format: ObjectId as a string. */ + sourceAuditId: string | null; +} +export const InformationRequestActivityLog = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + activityType: InformationRequestActivityType, + timestamp: S.String, + userEmail: S.NullOr(S.String), + oldStatus: S.NullOr(InformationRequestActivityLogOldStatus), + newStatus: S.NullOr(InformationRequestActivityLogNewStatus), + reason: S.NullOr(S.String), + fillOutcome: S.NullOr(EvidenceFillOutcome), + sourceInformationRequestId: S.NullOr(S.String), + sourceAuditId: S.NullOr(S.String), + }), +).annotate({ + identifier: "InformationRequestActivityLog", +}) as any as S.Schema; + +export type PaginatedResponseInformationRequestActivityLogResultsDataList = + Array; +export const PaginatedResponseInformationRequestActivityLogResultsDataList = + /*@__PURE__*/ S.Array( + InformationRequestActivityLog, + ) as any as S.Schema; + +export interface PaginatedResponseInformationRequestActivityLogResults { + data: PaginatedResponseInformationRequestActivityLogResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseInformationRequestActivityLogResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseInformationRequestActivityLogResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseInformationRequestActivityLogResults", + }) as any as S.Schema; + +export interface PaginatedResponseInformationRequestActivityLog { + results: PaginatedResponseInformationRequestActivityLogResults; +} +export const PaginatedResponseInformationRequestActivityLog = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseInformationRequestActivityLogResults, + }), + ).annotate({ + identifier: "PaginatedResponseInformationRequestActivityLog", + }) as any as S.Schema; + +export type ListInformationRequestEvidenceRequestEvidenceTypeMatchesAnyList = + Array; +export const ListInformationRequestEvidenceRequestEvidenceTypeMatchesAnyList = + /*@__PURE__*/ S.Array( + InformationRequestSupportedEvidenceType, + ) as any as S.Schema; + +export interface ListInformationRequestEvidenceRequest { + auditId: string; + requestId: string; + /** Maximum number of evidence entries to return per page. */ + pageSize?: number; + /** Pagination cursor from a previous response. Provide to fetch the next page of evidence. */ + pageCursor?: string; + /** Includes all evidence that have changed since changedSinceDate. Considers creationDate, modificationDate, deletionDate, and visibleToAuditorDate timestamps when determining changes. */ + changedSinceDate?: string; + /** Limits results to the provided evidence types. Must include at least one of: UPLOADED_DOCUMENT, OBSERVATION, LINK, VANTA_DOCUMENT, VANTA_POLICY, VANTA_TEST, VANTA_TEST_SNAPSHOT. */ + evidenceTypeMatchesAny?: ListInformationRequestEvidenceRequestEvidenceTypeMatchesAnyList; +} +export const ListInformationRequestEvidenceRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + changedSinceDate: S.optional(S.String.pipe(T.Query())), + evidenceTypeMatchesAny: S.optional( + ListInformationRequestEvidenceRequestEvidenceTypeMatchesAnyList.pipe( + T.Query(), + ), + ), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/information-requests/{requestId}/evidence", + code: 200, + }), + ), +).annotate({ + identifier: "ListInformationRequestEvidenceRequest", +}) as any as S.Schema; + +export type PaginatedResponseInformationRequestEvidenceResultsDataList = + Array; +export const PaginatedResponseInformationRequestEvidenceResultsDataList = + /*@__PURE__*/ S.Array( + InformationRequestEvidence, + ) as any as S.Schema; + +export interface PaginatedResponseInformationRequestEvidenceResults { + data: PaginatedResponseInformationRequestEvidenceResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseInformationRequestEvidenceResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseInformationRequestEvidenceResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseInformationRequestEvidenceResults", + }) as any as S.Schema; + +export interface PaginatedResponseInformationRequestEvidence { + results: PaginatedResponseInformationRequestEvidenceResults; +} +export const PaginatedResponseInformationRequestEvidence = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseInformationRequestEvidenceResults, + }), + ).annotate({ + identifier: "PaginatedResponseInformationRequestEvidence", + }) as any as S.Schema; + +export interface ListInformationRequestsRequest { + auditId: string; + /** Maximum number of information requests to return per page. */ + pageSize?: number; + /** Pagination cursor from a previous response. Provide to fetch the next page of results. */ + pageCursor?: string; + /** Includes all information requests that have changed since changedSinceDate. Considers creationDate, modificationDate, and deletionDate timestamps when determining changes. */ + changedSinceDate?: string; +} +export const ListInformationRequestsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + changedSinceDate: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/information-requests", + code: 200, + }), + ), +).annotate({ + identifier: "ListInformationRequestsRequest", +}) as any as S.Schema; + +export type PaginatedResponseInformationRequestResultsDataList = + Array; +export const PaginatedResponseInformationRequestResultsDataList = + /*@__PURE__*/ S.Array( + InformationRequest, + ) as any as S.Schema; + +export interface PaginatedResponseInformationRequestResults { + data: PaginatedResponseInformationRequestResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseInformationRequestResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseInformationRequestResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseInformationRequestResults", + }) as any as S.Schema; + +export interface PaginatedResponseInformationRequest { + results: PaginatedResponseInformationRequestResults; +} +export const PaginatedResponseInformationRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseInformationRequestResults, + }), +).annotate({ + identifier: "PaginatedResponseInformationRequest", +}) as any as S.Schema; + +export interface ListInformationRequestsForControlRequest { + auditId: string; + controlId: string; + /** Maximum number of information requests to return per page. */ + pageSize?: number; + /** Pagination cursor from a previous response. Provide to fetch the next page of results. */ + pageCursor?: string; +} +export const ListInformationRequestsForControlRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + auditId: S.String.pipe(T.Label()), + controlId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/controls/{controlId}/information-requests", + code: 200, + }), + ), +).annotate({ + identifier: "ListInformationRequestsForControlRequest", +}) as any as S.Schema; + +export type AuditIntegrationTag = + | "ACCESS" + | "COMPUTERS" + | "CUSTOM_RESOURCE" + | "DATA_LOSS_PREVENTION" + | "DOCUMENTS" + | "DOCUMENT_UPLOAD" + | "FRAMEWORK" + | "GROUPS" + | "INVENTORY" + | "NOTIFICATIONS" + | "PEOPLE" + | "POLICIES" + | "SECURITY_AWARENESS_TRAINING" + | "SECURITY_SCANNER_ALERTS" + | "SSO" + | "TASK_CREATION" + | "TASK_TRACKING" + | "TRUST_CENTER" + | "VENDOR_DISCOVERY" + | "VENDOR_PROCUREMENT" + | "VULNERABILITIES"; +export const AuditIntegrationTag = /*@__PURE__*/ S.String; + +export type ListIntegrationsRequestTagsMatchesAnyList = Array< + AuditIntegrationTag | (string & {}) +>; +export const ListIntegrationsRequestTagsMatchesAnyList = /*@__PURE__*/ S.Array( + AuditIntegrationTag, +) as any as S.Schema; + +export type AuditIntegrationCategory = + | "ATS_MERGE_ACCOUNT" + | "BACKGROUND_CHECK_SERVICE" + | "CLOUD_PROVIDER" + | "COMMUNICATION_PLATFORM" + | "CRM_MERGE_ACCOUNT" + | "CRM_PLATFORM" + | "DATASTORE_PROVIDER" + | "DATA_LOSS_PREVENTION" + | "DATA_WAREHOUSE_PROVIDER" + | "DOCUMENT_MANAGEMENT_TOOL" + | "ENDPOINT_SECURITY_TOOL" + | "HR_PROVIDER" + | "IDENTITY_PROVIDER" + | "INCIDENT_MANAGEMENT_TOOL" + | "MOBILE_DEVICE_MANAGEMENT_TOOL" + | "MONITORING_SERVICE" + | "OTHER_INTEGRATION" + | "SECURITY_AWARENESS_TRAINING_PROVIDER" + | "SECURITY_SCANNER_ALERTS" + | "TASK_TRACKER" + | "VERSION_CONTROL_SYSTEM" + | "VULNERABILITY_SCANNER"; +export const AuditIntegrationCategory = /*@__PURE__*/ S.String; + +export type ListIntegrationsRequestCategoriesMatchesAnyList = Array< + AuditIntegrationCategory | (string & {}) +>; +export const ListIntegrationsRequestCategoriesMatchesAnyList = + /*@__PURE__*/ S.Array( + AuditIntegrationCategory, + ) as any as S.Schema; + +export interface ListIntegrationsRequest { + /** The audit ID */ + auditId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; + /** Search term for filtering by integration name */ + search?: string; + /** Filter integrations by tag values */ + tagsMatchesAny?: ListIntegrationsRequestTagsMatchesAnyList; + /** Filter integrations by category values */ + categoriesMatchesAny?: ListIntegrationsRequestCategoriesMatchesAnyList; +} +export const ListIntegrationsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + tagsMatchesAny: S.optional( + ListIntegrationsRequestTagsMatchesAnyList.pipe(T.Query()), + ), + categoriesMatchesAny: S.optional( + ListIntegrationsRequestCategoriesMatchesAnyList.pipe(T.Query()), + ), + }).pipe( + T.Http({ method: "GET", uri: "/audits/{auditId}/integrations", code: 200 }), + ), +).annotate({ + identifier: "ListIntegrationsRequest", +}) as any as S.Schema; + +/** Integration tag display names describing what data this integration provides. */ +export type AuditIntegrationTagsList = Array; +export const AuditIntegrationTagsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Category display names describing what the integration is used for. */ +export type AuditIntegrationCategoriesList = Array; +export const AuditIntegrationCategoriesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Integration row returned by the auditor integrations API. `id` and `name` are always present. Other fields are optional to support controlled audits where only approved columns are returned. */ +export interface AuditIntegration { + /** Integration identifier. */ + id: string; + /** Display name of the integration. */ + name: string; + /** Integration tag display names describing what data this integration provides. */ + tags?: AuditIntegrationTagsList; + /** Category display names describing what the integration is used for. */ + categories?: AuditIntegrationCategoriesList; +} +export const AuditIntegration = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + tags: S.optional(AuditIntegrationTagsList), + categories: S.optional(AuditIntegrationCategoriesList), + }), +).annotate({ + identifier: "AuditIntegration", +}) as any as S.Schema; + +export type PaginatedResponseAuditIntegrationResultsDataList = + Array; +export const PaginatedResponseAuditIntegrationResultsDataList = + /*@__PURE__*/ S.Array( + AuditIntegration, + ) as any as S.Schema; + +export interface PaginatedResponseAuditIntegrationResults { + data: PaginatedResponseAuditIntegrationResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseAuditIntegrationResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseAuditIntegrationResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseAuditIntegrationResults", +}) as any as S.Schema; + +export interface PaginatedResponseAuditIntegration { + results: PaginatedResponseAuditIntegrationResults; +} +export const PaginatedResponseAuditIntegration = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseAuditIntegrationResults, + }), +).annotate({ + identifier: "PaginatedResponseAuditIntegration", +}) as any as S.Schema; + +/** Account status values for account access records. Unified status enum that covers all service types. */ +export type AccountAccessStatus = "ACTIVE" | "DEACTIVATED" | "UNKNOWN"; +export const AccountAccessStatus = /*@__PURE__*/ S.String; + +export interface ListPersonnelAccountAccessRequest { + /** The audit ID */ + auditId: string; + /** The service ID from the /services endpoint */ + serviceId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; + /** Search term for filtering by account name or email */ + search?: string; + /** Filter by account status */ + status?: AccountAccessStatus | (string & {}); +} +export const ListPersonnelAccountAccessRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + serviceId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + status: S.optional(AccountAccessStatus.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/personnel/account-access/{serviceId}", + code: 200, + }), + ), +).annotate({ + identifier: "ListPersonnelAccountAccessRequest", +}) as any as S.Schema; + +/** Account roles; empty array when the column is visible but has no roles. */ +export type AccountAccessRoleList = Array; +export const AccountAccessRoleList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Account access record from personnel population. This unified interface represents account access data from all service types: - IDP services (Okta, Azure AD, Google Workspace, etc.) - First-party account services (AWS, Azure, GCP, Oracle Cloud, etc.) - Role grants services (GCP, Azure role grants) - Received/third-party applications Only `id` and `accountName` are always present. Other fields are optional so disallowed columns can be omitted (for example under controlled audit view). When an optional field is present, `null` means the column is visible but empty (only fields that are nullable in population data use `null`). */ +export interface AccountAccess { + /** Unique identifier for the account. */ + id: string; + /** Account name or email address (primary identifier). */ + accountName: string; + /** Display name of the account owner, or null when the column is visible but unknown. */ + owner?: string | null; + /** Account roles; empty array when the column is visible but has no roles. */ + role?: AccountAccessRoleList; + /** Account status when present; omitted when the column is not in the response. */ + status?: AccountAccessStatus; + /** Multi-factor authentication (MFA) status when present. `true` = MFA enabled, `false` = MFA not enabled, `null` = visible but unknown. */ + mfa?: boolean | null; + /** Account creation date when present, or null when visible but absent. */ + createdDate?: string | null; + /** Account deactivation date when present, or null when active. */ + deactivatedDate?: string | null; +} +export const AccountAccess = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + accountName: S.String, + owner: S.optional(S.NullOr(S.String)), + role: S.optional(AccountAccessRoleList), + status: S.optional(AccountAccessStatus), + mfa: S.optional(S.NullOr(S.Boolean)), + createdDate: S.optional(S.NullOr(S.String)), + deactivatedDate: S.optional(S.NullOr(S.String)), + }), +).annotate({ identifier: "AccountAccess" }) as any as S.Schema; + +export type PaginatedResponseAccountAccessResultsDataList = + Array; +export const PaginatedResponseAccountAccessResultsDataList = + /*@__PURE__*/ S.Array( + AccountAccess, + ) as any as S.Schema; + +export interface PaginatedResponseAccountAccessResults { + data: PaginatedResponseAccountAccessResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseAccountAccessResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseAccountAccessResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseAccountAccessResults", +}) as any as S.Schema; + +export interface PaginatedResponseAccountAccess { + results: PaginatedResponseAccountAccessResults; +} +export const PaginatedResponseAccountAccess = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseAccountAccessResults, + }), +).annotate({ + identifier: "PaginatedResponseAccountAccess", +}) as any as S.Schema; + +export type ListPersonnelGroupsRequestSourcesMatchesAnyList = Array; +export const ListPersonnelGroupsRequestSourcesMatchesAnyList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export type GroupOrderBy = + | "name" + | "members" + | "source" + | "tasksLastUpdated" + | "pointOfContact"; +export const GroupOrderBy = /*@__PURE__*/ S.String; + +export interface ListPersonnelGroupsRequest { + /** The audit ID */ + auditId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; + /** Search term for filtering by group name */ + search?: string; + /** Filter groups by IDP source service names */ + sourcesMatchesAny?: ListPersonnelGroupsRequestSourcesMatchesAnyList; + /** Field to sort results by. Allowed: "name", "members", "source", "tasksLastUpdated", "pointOfContact". Default: "name" */ + orderBy?: GroupOrderBy | (string & {}); + /** Sort direction: "asc" or "desc". Default: "asc" */ + orderDirection?: OrderDirection | (string & {}); +} +export const ListPersonnelGroupsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + sourcesMatchesAny: S.optional( + ListPersonnelGroupsRequestSourcesMatchesAnyList.pipe(T.Query()), + ), + orderBy: S.optional(GroupOrderBy.pipe(T.Query())), + orderDirection: S.optional(OrderDirection.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/personnel/groups", + code: 200, + }), + ), +).annotate({ + identifier: "ListPersonnelGroupsRequest", +}) as any as S.Schema; + +/** A task assigned to a personnel group. */ +export interface PersonnelGroupTask { + /** Task name */ + name: string; +} +export const PersonnelGroupTask = /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + }), +).annotate({ + identifier: "PersonnelGroupTask", +}) as any as S.Schema; + +/** Security tasks enabled for this group, or empty array if not available. */ +export type PersonnelGroupTasksList = Array; +export const PersonnelGroupTasksList = /*@__PURE__*/ S.Array( + PersonnelGroupTask, +) as any as S.Schema; + +/** A group record from the personnel population. `id` and `name` are required. All other fields are optional to support customizable field visibility. Omitted keys mean the column is not in the response; `null` means the column is present but empty. */ +export interface PersonnelGroup { + /** Unique identifier for the group. */ + id: string; + /** Display name of the group. */ + name: string; + /** Number of people in this group within the audit scope. */ + members?: number; + /** The source of this group. For IDP-synced groups, this is the provider name (e.g., "Okta", "Azure AD"). For manually created groups, this is "Vanta". */ + source?: string; + /** Security tasks enabled for this group, or empty array if not available. */ + tasks?: PersonnelGroupTasksList; + /** When the group's task configuration was last updated, or null if never updated. ISO 8601 format. */ + tasksLastUpdated?: string | null; + /** Display name of the group's designated point of contact, or null if not set. */ + pointOfContact?: string | null; +} +export const PersonnelGroup = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + members: S.optional(S.Number), + source: S.optional(S.String), + tasks: S.optional(PersonnelGroupTasksList), + tasksLastUpdated: S.optional(S.NullOr(S.String)), + pointOfContact: S.optional(S.NullOr(S.String)), + }), +).annotate({ identifier: "PersonnelGroup" }) as any as S.Schema; + +export type PaginatedResponsePersonnelGroupResultsDataList = + Array; +export const PaginatedResponsePersonnelGroupResultsDataList = + /*@__PURE__*/ S.Array( + PersonnelGroup, + ) as any as S.Schema; + +export interface PaginatedResponsePersonnelGroupResults { + data: PaginatedResponsePersonnelGroupResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponsePersonnelGroupResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponsePersonnelGroupResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponsePersonnelGroupResults", +}) as any as S.Schema; + +export interface PaginatedResponsePersonnelGroup { + results: PaginatedResponsePersonnelGroupResults; +} +export const PaginatedResponsePersonnelGroup = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponsePersonnelGroupResults, + }), +).annotate({ + identifier: "PaginatedResponsePersonnelGroup", +}) as any as S.Schema; + +/** Employment status filter for people queries. */ +export type PeopleEmploymentStatus = + | "CURRENTLY_EMPLOYED" + | "INACTIVE_EMPLOYEE" + | "NOT_PEOPLE" + | "ON_LEAVE" + | "PREVIOUSLY_EMPLOYED" + | "UPCOMING_EMPLOYEE"; +export const PeopleEmploymentStatus = /*@__PURE__*/ S.String; + +export type ListPersonnelPeopleRequestGroupsMatchesAnyList = Array; +export const ListPersonnelPeopleRequestGroupsMatchesAnyList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export type PeopleOrderBy = "name" | "employmentStatus"; +export const PeopleOrderBy = /*@__PURE__*/ S.String; + +export interface ListPersonnelPeopleRequest { + /** The audit ID */ + auditId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; + /** Search term for filtering by name or email */ + search?: string; + /** Employment status filter */ + status?: PeopleEmploymentStatus | (string & {}); + /** Filter people by group IDs */ + groupsMatchesAny?: ListPersonnelPeopleRequestGroupsMatchesAnyList; + /** Field to sort results by. Allowed: "name", "employmentStatus". Default: "name" */ + orderBy?: PeopleOrderBy | (string & {}); + /** Sort direction: "asc" or "desc". Default: "asc" */ + orderDirection?: OrderDirection | (string & {}); +} +export const ListPersonnelPeopleRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + status: S.optional(PeopleEmploymentStatus.pipe(T.Query())), + groupsMatchesAny: S.optional( + ListPersonnelPeopleRequestGroupsMatchesAnyList.pipe(T.Query()), + ), + orderBy: S.optional(PeopleOrderBy.pipe(T.Query())), + orderDirection: S.optional(OrderDirection.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/personnel/people", + code: 200, + }), + ), +).annotate({ + identifier: "ListPersonnelPeopleRequest", +}) as any as S.Schema; + +export interface PersonnelPersonGroupsItem { + name: string; +} +export const PersonnelPersonGroupsItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + }), +).annotate({ + identifier: "PersonnelPersonGroupsItem", +}) as any as S.Schema; + +/** Groups (roles) the person belongs to. Present only when the column is in the response; use an empty array when there are no groups. */ +export type PersonnelPersonGroupsList = Array; +export const PersonnelPersonGroupsList = /*@__PURE__*/ S.Array( + PersonnelPersonGroupsItem, +) as any as S.Schema; + +/** Source information for a person's data. Full Audit View only - omitted in Controlled Audit View. */ +export interface PeopleSourceInfo { + /** Main source of user data. */ + mainSource: string; + /** Supplementary source, or null if none. */ + supplementarySource: string | null; +} +export const PeopleSourceInfo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + mainSource: S.String, + supplementarySource: S.NullOr(S.String), + }), +).annotate({ + identifier: "PeopleSourceInfo", +}) as any as S.Schema; + +/** Overall user task status. */ +export type PeopleTaskStatus = + | "NO_SECURITY_TASKS" + | "OFFBOARDING_COMPLETE" + | "OFFBOARDING_DUE_SOON" + | "OFFBOARDING_OVERDUE" + | "PAUSED" + | "SECURITY_TASKS_COMPLETE" + | "SECURITY_TASKS_DUE_SOON" + | "SECURITY_TASKS_OVERDUE"; +export const PeopleTaskStatus = /*@__PURE__*/ S.String; + +/** Overall task status information for a person. Full Audit View only - omitted in Controlled Audit View. */ +export interface PeopleTaskStatusInfo { + /** Overall task status. */ + status: PeopleTaskStatus; + /** Due date for the earliest incomplete task in ISO 8601 format, or null if none. */ + dueDate: string | null; + /** Completion date when all tasks are complete in ISO 8601 format, or null if incomplete. */ + completionDate: string | null; + /** Count of completed tasks, or null if not available. */ + numTasksCompleted: number | null; + /** Count of overdue tasks, or null if not available. */ + numTasksOverdue: number | null; + /** Count of tasks due soon, or null if not available. */ + numTasksDueSoon: number | null; +} +export const PeopleTaskStatusInfo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + status: PeopleTaskStatus, + dueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + numTasksCompleted: S.NullOr(S.Number), + numTasksOverdue: S.NullOr(S.Number), + numTasksDueSoon: S.NullOr(S.Number), + }), +).annotate({ + identifier: "PeopleTaskStatusInfo", +}) as any as S.Schema; + +/** Security task status for individual task categories. */ +export type PeopleSecurityTaskStatus = + | "NO_SECURITY_TASKS" + | "SECURITY_TASKS_COMPLETE" + | "SECURITY_TASKS_DUE_SOON" + | "SECURITY_TASKS_OVERDUE"; +export const PeopleSecurityTaskStatus = /*@__PURE__*/ S.String; + +/** Security task details for a specific task category. Full Audit View only - omitted in Controlled Audit View. */ +export interface PeopleSecurityTaskDetails { + /** Task status for this category. */ + status: PeopleSecurityTaskStatus; + /** Due date for incomplete task in ISO 8601 format, or null if none. */ + dueDate: string | null; + /** Completion date for completed task in ISO 8601 format, or null if incomplete. */ + completionDate: string | null; +} +export const PeopleSecurityTaskDetails = /*@__PURE__*/ S.suspend(() => + S.Struct({ + status: PeopleSecurityTaskStatus, + dueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + }), +).annotate({ + identifier: "PeopleSecurityTaskDetails", +}) as any as S.Schema; + +/** Personnel person data. `id`, `name`, and `email` are required. All other fields are optional to support customizable field visibility. Omitted keys mean the column is not in the response; `null` means the column is present but empty. */ +export interface PersonnelPerson { + /** User ID - always present. */ + id: string; + /** Display name of the person - always present. */ + name: string; + /** Email address of the person - always present. */ + email: string; + /** Job title from HR system, or null if not available. */ + jobTitle?: string | null; + /** Employment status, or null if not available. */ + employmentStatus?: PeopleEmploymentStatus | null; + /** Start date in ISO 8601 format (YYYY-MM-DD), or null if not available. Timezone depends on source: UTC if from HR system, customer timezone if manually entered. */ + startDate?: string | null; + /** End date in ISO 8601 format (YYYY-MM-DD), or null if currently employed. */ + endDate?: string | null; + /** Groups (roles) the person belongs to. Present only when the column is in the response; use an empty array when there are no groups. */ + groups?: PersonnelPersonGroupsList; + /** Source of user data, or null if not available. Full Audit View only - omitted in Controlled Audit View. */ + source?: PeopleSourceInfo | null; + /** Overall task status information, or null if not available. Full Audit View only - omitted in Controlled Audit View. */ + taskStatus?: PeopleTaskStatusInfo | null; + /** Last date user was sent an onboarding reminder email in ISO 8601 format, or null if never reminded. Full Audit View only - omitted in Controlled Audit View. */ + lastReminded?: string | null; + /** Policy acceptance task details, or null if not available. Full Audit View only - omitted in Controlled Audit View. */ + policies?: PeopleSecurityTaskDetails | null; + /** Security training task details, or null if not available. Full Audit View only - omitted in Controlled Audit View. */ + trainings?: PeopleSecurityTaskDetails | null; + /** Background check task details, or null if not available. Full Audit View only - omitted in Controlled Audit View. */ + backgroundChecks?: PeopleSecurityTaskDetails | null; + /** Device monitoring task details, or null if not available. Full Audit View only - omitted in Controlled Audit View. */ + deviceMonitoring?: PeopleSecurityTaskDetails | null; + /** Custom onboarding task details, or null if not available. Full Audit View only - omitted in Controlled Audit View. */ + customOnboarding?: PeopleSecurityTaskDetails | null; + /** Custom offboarding task details, or null if not available. Full Audit View only - omitted in Controlled Audit View. */ + customOffboarding?: PeopleSecurityTaskDetails | null; +} +export const PersonnelPerson = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + email: S.String, + jobTitle: S.optional(S.NullOr(S.String)), + employmentStatus: S.optional(S.NullOr(PeopleEmploymentStatus)), + startDate: S.optional(S.NullOr(S.String)), + endDate: S.optional(S.NullOr(S.String)), + groups: S.optional(PersonnelPersonGroupsList), + source: S.optional(S.NullOr(PeopleSourceInfo)), + taskStatus: S.optional(S.NullOr(PeopleTaskStatusInfo)), + lastReminded: S.optional(S.NullOr(S.String)), + policies: S.optional(S.NullOr(PeopleSecurityTaskDetails)), + trainings: S.optional(S.NullOr(PeopleSecurityTaskDetails)), + backgroundChecks: S.optional(S.NullOr(PeopleSecurityTaskDetails)), + deviceMonitoring: S.optional(S.NullOr(PeopleSecurityTaskDetails)), + customOnboarding: S.optional(S.NullOr(PeopleSecurityTaskDetails)), + customOffboarding: S.optional(S.NullOr(PeopleSecurityTaskDetails)), + }), +).annotate({ + identifier: "PersonnelPerson", +}) as any as S.Schema; + +export type PaginatedResponsePersonnelPersonResultsDataList = + Array; +export const PaginatedResponsePersonnelPersonResultsDataList = + /*@__PURE__*/ S.Array( + PersonnelPerson, + ) as any as S.Schema; + +export interface PaginatedResponsePersonnelPersonResults { + data: PaginatedResponsePersonnelPersonResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponsePersonnelPersonResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponsePersonnelPersonResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponsePersonnelPersonResults", +}) as any as S.Schema; + +export interface PaginatedResponsePersonnelPerson { + results: PaginatedResponsePersonnelPersonResults; +} +export const PaginatedResponsePersonnelPerson = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponsePersonnelPersonResults, + }), +).annotate({ + identifier: "PaginatedResponsePersonnelPerson", +}) as any as S.Schema; + +export interface ListRiskSnapshotsRequest { + /** The audit ID */ + auditId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; +} +export const ListRiskSnapshotsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/risks/snapshots", + code: 200, + }), + ), +).annotate({ + identifier: "ListRiskSnapshotsRequest", +}) as any as S.Schema; + +/** A risk assessment snapshot available for an audit. Risk snapshots capture the state of an organization's risk register at a point in time. Use the snapshot `id` with the `/audits/{auditId}/risks/{snapshotId}` endpoint to retrieve the risk scenarios within a snapshot. */ +export interface RiskSnapshot { + /** Unique identifier for the risk snapshot. */ + id: string; + /** The date and time when this risk snapshot was created. */ + createdAt: string; +} +export const RiskSnapshot = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + createdAt: S.String, + }), +).annotate({ identifier: "RiskSnapshot" }) as any as S.Schema; + +export type PaginatedResponseRiskSnapshotResultsDataList = Array; +export const PaginatedResponseRiskSnapshotResultsDataList = + /*@__PURE__*/ S.Array( + RiskSnapshot, + ) as any as S.Schema; + +export interface PaginatedResponseRiskSnapshotResults { + data: PaginatedResponseRiskSnapshotResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseRiskSnapshotResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseRiskSnapshotResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseRiskSnapshotResults", +}) as any as S.Schema; + +export interface PaginatedResponseRiskSnapshot { + results: PaginatedResponseRiskSnapshotResults; +} +export const PaginatedResponseRiskSnapshot = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseRiskSnapshotResults, + }), +).annotate({ + identifier: "PaginatedResponseRiskSnapshot", +}) as any as S.Schema; + +export type AuditVendorStatus = "ACTIVE" | "ARCHIVED" | "IN_PROCUREMENT"; +export const AuditVendorStatus = /*@__PURE__*/ S.String; + +export type ListVendorsRequestVendorStatusesMatchesAnyList = Array< + AuditVendorStatus | (string & {}) +>; +export const ListVendorsRequestVendorStatusesMatchesAnyList = + /*@__PURE__*/ S.Array( + AuditVendorStatus, + ) as any as S.Schema; + +export type AuditVendorRiskLevel = + | "CRITICAL" + | "HIGH" + | "MEDIUM" + | "LOW" + | "UNSCORED"; +export const AuditVendorRiskLevel = /*@__PURE__*/ S.String; + +export type ListVendorsRequestInherentRiskMatchesAnyList = Array< + AuditVendorRiskLevel | (string & {}) +>; +export const ListVendorsRequestInherentRiskMatchesAnyList = + /*@__PURE__*/ S.Array( + AuditVendorRiskLevel, + ) as any as S.Schema; + +export type VendorOrderBy = "name" | "inherentRisk"; +export const VendorOrderBy = /*@__PURE__*/ S.String; + +export interface ListVendorsRequest { + /** The audit ID */ + auditId: string; + /** Maximum number of results per page (1-100, default 10) */ + pageSize?: number; + /** Pagination cursor from previous response */ + pageCursor?: string; + /** Search term for filtering by vendor name */ + search?: string; + /** Filter vendors by status values */ + vendorStatusesMatchesAny?: ListVendorsRequestVendorStatusesMatchesAnyList; + /** Filter vendors by inherent risk level values */ + inherentRiskMatchesAny?: ListVendorsRequestInherentRiskMatchesAnyList; + /** Field to sort results by. Allowed: "name", "inherentRisk". Default: "name" */ + orderBy?: VendorOrderBy | (string & {}); + /** Sort direction: "asc" or "desc". Default: "asc" */ + orderDirection?: OrderDirection | (string & {}); +} +export const ListVendorsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + vendorStatusesMatchesAny: S.optional( + ListVendorsRequestVendorStatusesMatchesAnyList.pipe(T.Query()), + ), + inherentRiskMatchesAny: S.optional( + ListVendorsRequestInherentRiskMatchesAnyList.pipe(T.Query()), + ), + orderBy: S.optional(VendorOrderBy.pipe(T.Query())), + orderDirection: S.optional(OrderDirection.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/audits/{auditId}/managed-vendors", + code: 200, + }), + ), +).annotate({ + identifier: "ListVendorsRequest", +}) as any as S.Schema; + +/** BAA/DPA document completion counts, or null if no such documents are required. Full Audit View only - omitted in Controlled Audit View. */ +export interface AuditVendorDataAgreements { + total: number; + complete: number; +} +export const AuditVendorDataAgreements = /*@__PURE__*/ S.suspend(() => + S.Struct({ + total: S.Number, + complete: S.Number, + }), +).annotate({ + identifier: "AuditVendorDataAgreements", +}) as any as S.Schema; + +/** Managed vendor row returned by the auditor managed-vendors API. Only `id` and `name` are required. All other fields are optional to support controlled audits where only approved columns are returned and customizable field visibility. */ +export interface AuditVendor { + /** Vendor record ID. */ + id: string; + /** Vendor name. */ + name: string; + /** Inherent risk level of the vendor. */ + inherentRisk?: AuditVendorRiskLevel; + /** Vendor status. */ + status?: AuditVendorStatus; + /** Number of findings associated with the vendor. */ + findings?: number; + /** Date when the last security review was completed, or null if none. */ + lastReviewedCompleted?: string | null; + /** Date when the next security review is due, or null if not scheduled. */ + nextSecurityReviewDueDate?: string | null; + /** Vendor category (e.g. cloud provider, SaaS). */ + vendorCategory?: string | null; + /** Residual risk level of the vendor. Full Audit View only - omitted in Controlled Audit View. */ + residualRisk?: AuditVendorRiskLevel | null; + /** BAA/DPA document completion counts, or null if no such documents are required. Full Audit View only - omitted in Controlled Audit View. */ + dataAgreements?: AuditVendorDataAgreements | null; +} +export const AuditVendor = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + inherentRisk: S.optional(AuditVendorRiskLevel), + status: S.optional(AuditVendorStatus), + findings: S.optional(S.Number), + lastReviewedCompleted: S.optional(S.NullOr(S.String)), + nextSecurityReviewDueDate: S.optional(S.NullOr(S.String)), + vendorCategory: S.optional(S.NullOr(S.String)), + residualRisk: S.optional(S.NullOr(AuditVendorRiskLevel)), + dataAgreements: S.optional(S.NullOr(AuditVendorDataAgreements)), + }), +).annotate({ identifier: "AuditVendor" }) as any as S.Schema; + +export type PaginatedResponseAuditVendorResultsDataList = Array; +export const PaginatedResponseAuditVendorResultsDataList = + /*@__PURE__*/ S.Array( + AuditVendor, + ) as any as S.Schema; + +export interface PaginatedResponseAuditVendorResults { + data: PaginatedResponseAuditVendorResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseAuditVendorResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseAuditVendorResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseAuditVendorResults", +}) as any as S.Schema; + +export interface PaginatedResponseAuditVendor { + results: PaginatedResponseAuditVendorResults; +} +export const PaginatedResponseAuditVendor = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseAuditVendorResults, + }), +).annotate({ + identifier: "PaginatedResponseAuditVendor", +}) as any as S.Schema; + +export interface ShareInformationRequestListRequest { + auditId: string; +} +export const ShareInformationRequestListRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "POST", + uri: "/audits/{auditId}/share-information-request-list", + code: 200, + }), + ), +).annotate({ + identifier: "ShareInformationRequestListRequest", +}) as any as S.Schema; + +export type AuditorEnabledStateTransition = + | "ACCEPT" + | "MARK_APPLICABLE" + | "FLAG" + | "MARK_NA" + | "READY_FOR_AUDIT"; +export const AuditorEnabledStateTransition = /*@__PURE__*/ S.String; + +export interface UpdateAuditEvidenceRequestStatusUpdate { + /** Email of the auditor who changed the state */ + auditorEmail: string; + /** State change for audit evidence */ + stateTransition: AuditorEnabledStateTransition | (string & {}); +} +export const UpdateAuditEvidenceRequestStatusUpdate = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + auditorEmail: S.String, + stateTransition: AuditorEnabledStateTransition, + }), +).annotate({ + identifier: "UpdateAuditEvidenceRequestStatusUpdate", +}) as any as S.Schema; + +export interface UpdateAuditEvidenceRequest { + auditId: string; + auditEvidenceId: string; + statusUpdate?: UpdateAuditEvidenceRequestStatusUpdate; +} +export const UpdateAuditEvidenceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + auditEvidenceId: S.String.pipe(T.Label()), + statusUpdate: S.optional(UpdateAuditEvidenceRequestStatusUpdate), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/audits/{auditId}/evidence/{auditEvidenceId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateAuditEvidenceRequest", +}) as any as S.Schema; + +export interface UpdateCommentForControlRequest { + auditId: string; + controlId: string; + commentId: string; + /** The text content of the comment. Must be at least 1 character. Can include questions, clarifications, or explanations related to the control. */ + text: string; + /** Email address of the comment author. Must match an existing Vanta user who belongs to the audit firm making the API request. This email uniquely identifies the author across systems. */ + email: string; +} +export const UpdateCommentForControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + controlId: S.String.pipe(T.Label()), + commentId: S.String.pipe(T.Label()), + text: S.String, + email: S.String, + }).pipe( + T.Http({ + method: "PATCH", + uri: "/audits/{auditId}/controls/{controlId}/comments/{commentId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateCommentForControlRequest", +}) as any as S.Schema; + +export interface UpdateCommentForInformationRequestRequest { + auditId: string; + requestId: string; + commentId: string; + /** The text content of the comment. Must be at least 1 character. Can include questions, clarifications, or explanations related to the information request. */ + text: string; + /** Email address of the comment author. Must match an existing Vanta user who belongs to the audit firm making the API request. This email uniquely identifies the author across systems. */ + email: string; +} +export const UpdateCommentForInformationRequestRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + commentId: S.String.pipe(T.Label()), + text: S.String, + email: S.String, + }).pipe( + T.Http({ + method: "PATCH", + uri: "/audits/{auditId}/information-requests/{requestId}/comments/{commentId}", + code: 200, + }), + ), + ).annotate({ + identifier: "UpdateCommentForInformationRequestRequest", + }) as any as S.Schema; + +/** The framework codes this request addresses. An empty array if no framework codes are associated. */ +export type UpdateInformationRequestRequestFrameworkCodesList = Array; +export const UpdateInformationRequestRequestFrameworkCodesList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** Control IDs to link directly to this request, beyond those automatically mapped from framework codes. Replaces the existing set: pass the complete desired list, an empty array to clear all direct control links, or omit to leave them unchanged. Each must be the `id` of an existing control in the customer's organization (the identifier returned by the controls endpoints). The request is rejected if any ID does not match a control. */ +export type UpdateInformationRequestRequestAdditionalControlIdsList = + Array; +export const UpdateInformationRequestRequestAdditionalControlIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface UpdateInformationRequestRequest { + auditId: string; + requestId: string; + /** The framework codes this request addresses. An empty array if no framework codes are associated. */ + frameworkCodes?: UpdateInformationRequestRequestFrameworkCodesList; + /** Detailed description of what evidence is needed. */ + description?: string | null; + /** Deadline for fulfilling this request. Null if no deadline. Format: ISO 8601 UTC timestamp. */ + dueDate?: string | null; + /** Start date of the audit period. Evidence before this date may not be accepted. Null if not restricted. Format: ISO 8601 UTC timestamp. */ + evidenceCaptureDate?: string | null; + /** Scope of evidence required. */ + requestType?: InformationRequestType | (string & {}); + /** Short, descriptive title. */ + title?: string; + /** How frequently this request recurs. */ + cadence?: InformationRequestCadence | (string & {}); + /** Control IDs to link directly to this request, beyond those automatically mapped from framework codes. Replaces the existing set: pass the complete desired list, an empty array to clear all direct control links, or omit to leave them unchanged. Each must be the `id` of an existing control in the customer's organization (the identifier returned by the controls endpoints). The request is rejected if any ID does not match a control. */ + additionalControlIds?: UpdateInformationRequestRequestAdditionalControlIdsList; +} +export const UpdateInformationRequestRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + requestId: S.String.pipe(T.Label()), + frameworkCodes: S.optional( + UpdateInformationRequestRequestFrameworkCodesList, + ), + description: S.optional(S.NullOr(S.String)), + dueDate: S.optional(S.NullOr(S.String)), + evidenceCaptureDate: S.optional(S.NullOr(S.String)), + requestType: S.optional(InformationRequestType), + title: S.optional(S.String), + cadence: S.optional(InformationRequestCadence), + additionalControlIds: S.optional( + UpdateInformationRequestRequestAdditionalControlIdsList, + ), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/audits/{auditId}/information-requests/{requestId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateInformationRequestRequest", +}) as any as S.Schema; + +export interface UpsertAssessmentForControlRequest { + auditId: string; + controlId: string; + /** The program segment to assess. Required when the audit has more than one program segment. Optional on a single-program audit (the only program is used). Must be a program segment on the audit; system segments are rejected. */ + segmentId?: string; + /** The assessment state to record. Must be one of the states valid for the segment's framework; the request is rejected otherwise. */ + assessmentState: AuditControlAssessmentState | (string & {}); + /** Free-text reasoning for the assessment. Required, and at most 5000 characters. */ + justification: string; + /** Email of the auditor performing the assessment. Must match an existing Vanta user who belongs to the audit firm making the API request. */ + auditorEmail: string; +} +export const UpsertAssessmentForControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + auditId: S.String.pipe(T.Label()), + controlId: S.String.pipe(T.Label()), + segmentId: S.optional(S.String), + assessmentState: AuditControlAssessmentState, + justification: S.String, + auditorEmail: S.String, + }).pipe( + T.Http({ + method: "PUT", + uri: "/audits/{auditId}/controls/{controlId}/assessment", + code: 200, + }), + ), +).annotate({ + identifier: "UpsertAssessmentForControlRequest", +}) as any as S.Schema; + +/** A control's auditor assessment, as persisted. Returned by the assessment write endpoint so the caller sees exactly what was recorded. */ +export interface AuditorControlAssessment { + /** The control this assessment belongs to. */ + controlId: string; + /** The program segment this assessment was written to. */ + segmentId: string; + /** The recorded assessment state. */ + assessmentState: AuditControlAssessmentState; + /** The recorded justification. */ + justification: string; +} +export const AuditorControlAssessment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String, + segmentId: S.String, + assessmentState: AuditControlAssessmentState, + justification: S.String, + }), +).annotate({ + identifier: "AuditorControlAssessment", +}) as any as S.Schema; + +export type AcceptInformationRequestEvidenceError = VantaOpError; +/** Accept evidence for an information request Accepts evidence for an information request, confirming that all submitted evidence meets audit requirements. This action changes the request's approvalStatus to an approved state and creates an activity log entry. Acceptance workflow: 1. Auditor reviews submitted evidence 2. If evidence is satisfactory, auditor calls this endpoint 3. Request status changes to approved state and is considered complete for this audit cycle Use this endpoint when: - All required evidence has been submitted - Evidence quality meets audit standards - Evidence addresses all specified framework codes - No additional information is needed Rate limit: 50 requests / minute. */ +export const acceptInformationRequestEvidence: API.OperationMethod< + AcceptInformationRequestEvidenceRequest, + InformationRequest, + AcceptInformationRequestEvidenceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AcceptInformationRequestEvidenceRequest, + output: InformationRequest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateAuditorError = VantaOpError; +/** Create an auditor Create an auditor in Vanta. Rate limit: 10 requests / minute. */ +export const createAuditor: API.OperationMethod< + CreateAuditorRequest, + Auditor, + CreateAuditorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateAuditorRequest, + output: Auditor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateCommentForAuditEvidenceError = VantaOpError; +/** Create a comment for audit evidence Create a comment in Vanta for a piece of evidence. Rate limit: 25 requests / minute. */ +export const createCommentForAuditEvidence: API.OperationMethod< + CreateCommentForAuditEvidenceRequest, + Comment, + CreateCommentForAuditEvidenceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateCommentForAuditEvidenceRequest, + output: Comment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateCommentForControlError = VantaOpError; +/** Create a comment for a control within an audit Creates a new comment on a control within an IRL audit. The comment author must be an auditor in the audit firm making the request. The comment will be associated with the control and visible to all authorized users. Returns 404 when the control is not part of the audit. Rate limit: 50 requests / minute. */ +export const createCommentForControl: API.OperationMethod< + CreateCommentForControlRequest, + AuditControlComment, + CreateCommentForControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateCommentForControlRequest, + output: AuditControlComment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateCommentForInformationRequestError = VantaOpError; +/** Create a comment for an information request Creates a new comment for an information request. The comment author must be an auditor in the audit firm making the request. The comment will be associated with the information request and visible to all authorized users. Rate limit: 50 requests / minute. */ +export const createCommentForInformationRequest: API.OperationMethod< + CreateCommentForInformationRequestRequest, + InformationRequestComment, + CreateCommentForInformationRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateCommentForInformationRequestRequest, + output: InformationRequestComment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateCustomControlError = VantaOpError; +/** Create a custom control for an audit Create a custom control for an audit. This endpoint supports classic audits only. Audits that use information request lists (IRL) are not supported and return a 422 error. Rate limit: 10 requests / minute. */ +export const createCustomControl: API.OperationMethod< + CreateCustomControlRequest, + Control, + CreateCustomControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateCustomControlRequest, + output: Control, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateCustomEvidenceRequestError = VantaOpError; +/** Create a custom evidence request for an audit Create a custom evidence request for an audit. Rate limit: 10 requests / minute. */ +export const createCustomEvidenceRequest: API.OperationMethod< + CreateCustomEvidenceRequestRequest, + CustomEvidenceRequest, + CreateCustomEvidenceRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateCustomEvidenceRequestRequest, + output: CustomEvidenceRequest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateInformationRequestError = VantaOpError; +/** Create a new information request Creates a new information request for an audit during audit setup or as requirements evolve. After creating all information requests, use POST /audits/{auditId}/share-information-request-list to make them visible to the customer organization. Until shared, requests remain in draft state visible only to auditors. New requests are created in an initial state indicating evidence is needed. The status progresses through the workflow: initial state → awaiting review → approved or flagged. Rate limit: 600 requests / minute. */ +export const createInformationRequest: API.OperationMethod< + CreateInformationRequestRequest, + InformationRequest, + CreateInformationRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateInformationRequestRequest, + output: InformationRequest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteCommentForControlError = VantaOpError; +/** Delete a comment for a control within an audit Deletes an existing comment on a control. Only the original author of the comment can delete it. The author is identified by their email address, which must match the email of the user who created the comment. Rate limit: 10 requests / minute. */ +export const deleteCommentForControl: API.OperationMethod< + DeleteCommentForControlRequest, + DeleteCommentForControlResponse, + DeleteCommentForControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteCommentForControlRequest, + output: DeleteCommentForControlResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteCommentForInformationRequestError = VantaOpError; +/** Delete a comment for an information request Deletes an existing comment for an information request. Only the original author of the comment can delete it. The author is identified by their email address, which must match the email of the user who created the comment. Rate limit: 25 requests / minute. */ +export const deleteCommentForInformationRequest: API.OperationMethod< + DeleteCommentForInformationRequestRequest, + DeleteCommentForInformationRequestResponse, + DeleteCommentForInformationRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteCommentForInformationRequestRequest, + output: DeleteCommentForInformationRequestResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteInformationRequestError = VantaOpError; +/** Delete an information request for an audit Deletes an information request for an audit. This performs a soft delete, marking the request as deleted (setting `deletionDate`) while preserving it in the system for audit history and compliance tracking. Soft deletion allows: - Maintaining complete audit trail of all requests ever created - Retrieving deleted requests via `changedSinceDate` for synchronization After deletion: - The request will not appear in normal list responses (without `changedSinceDate`) - The request's `deletionDate` field will be populated Rate limit: 50 requests / minute. */ +export const deleteInformationRequest: API.OperationMethod< + DeleteInformationRequestRequest, + DeleteInformationRequestResponse, + DeleteInformationRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteInformationRequestRequest, + output: DeleteInformationRequestResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DuplicateError = VantaOpError; +/** Duplicate an IRL audit Duplicates an existing IRL audit into a new audit engagement with the supplied displayName, audit dates, early access date, and auditor roster. Company, audit type, and framework are copied from the source audit and cannot be changed. Each email in `allowAuditorEmails` must match an active user in the authenticated audit firm's domain. Provision auditors via `POST /auditors` before referencing them here, or copy emails from `GET /audits/{sourceAuditId}` → `allowAuditorEmails` when duplicating with the same roster. Information requests are copied from the source audit. After duplication: - Requests with Vanta evidence will be pre-filled and marked as internal review. Review them before sharing with your customer. - Requests where evidence was not available or was uploaded externally will need evidence added manually. - Evidence capture dates and due dates can be modified after duplication. Audits with generated information requests can be duplicated only after their information requests have been created successfully. Rate limit: 10 requests / minute. */ +export const duplicate: API.OperationMethod< + DuplicateRequest, + Audit, + DuplicateError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DuplicateRequest, + output: Audit, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type FlagInformationRequestEvidenceError = VantaOpError; +/** Flag evidence for an information request Flags evidence for an information request when it doesn't meet audit requirements, marking issues that need to be addressed before approval. This action changes the request's approvalStatus to a flagged state and creates an activity log entry. Flagging workflow: 1. Auditor reviews submitted evidence 2. If issues are found, auditor calls this endpoint with detailed reason 3. Request status changes to flagged state 4. Customer is notified and can see the reason in activity logs 5. Customer addresses issues and updates evidence 6. When ready, customer changes status back to awaiting review 7. Auditor reviews again and either flags again or accepts The `reason` field should clearly explain what's missing or incorrect so the customer knows exactly what to fix. This reason is visible to the customer and appears in the activity log. Rate limit: 50 requests / minute. */ +export const flagInformationRequestEvidence: API.OperationMethod< + FlagInformationRequestEvidenceRequest, + InformationRequest, + FlagInformationRequestEvidenceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: FlagInformationRequestEvidenceRequest, + output: InformationRequest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetAuditError = VantaOpError; +/** Get audit by ID Returns a single audit by ID, scoped to the audit firm. To identify IRL (Information Request List) audits, check for the presence of the `auditorRequestListMetadata` field. This field is only present for IRL-based audits and will be `undefined` for standard audits. The response includes `segments`, the audit's scope. A live single-framework audit has one entry; a live multi-framework audit has one entry per in-scope framework (and business unit or system, when applicable). Soft-deleted audits return an empty list. The top-level `framework` field is deprecated; use `segments` for framework identity. Rate limit: 250 requests / minute. */ +export const getAudit: API.OperationMethod< + GetAuditRequest, + Audit, + GetAuditError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetAuditRequest, + output: Audit, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetAuditEvidenceError = VantaOpError; +/** Get an audit evidence item by ID Retrieves a single classic audit evidence item by its ID, scoped to its audit. The response matches the entry `GET /audits/{auditId}/evidence` returns for the same item, so an evidence ID surfaced by a webhook can be resolved directly instead of paging the audit's full evidence list. Soft-deleted evidence (where `deletionDate !== null`) is included in the response. Clients should check `deletionDate` to determine whether the item has been deleted. This matches `GET /audits/{auditId}/evidence`, which supports `changedSinceDate` and returns soft-deleted evidence for delta sync. As on the list endpoint, `description` is null for deleted items. Rate limit: 250 requests / minute. */ +export const getAuditEvidence: API.OperationMethod< + GetAuditEvidenceRequest, + Evidence, + GetAuditEvidenceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetAuditEvidenceRequest, + output: Evidence, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetAuditEvidenceCommentError = VantaOpError; +/** Get an audit evidence comment by ID Retrieves a single comment on a classic audit evidence item by its ID. Soft-deleted comments (where `deletionDate !== null`) are included in the response. Clients should check `deletionDate` to determine whether the comment has been deleted. This matches `GET /audits/{auditId}/comments`, which supports `changedSinceDate` and returns soft-deleted comments for delta sync. Comments remain fetchable when the parent evidence item has been soft-deleted, so delayed webhook consumers can still resolve a comment ID after evidence deletion. Rate limit: 50 requests / minute. */ +export const getAuditEvidenceComment: API.OperationMethod< + GetAuditEvidenceCommentRequest, + Comment, + GetAuditEvidenceCommentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetAuditEvidenceCommentRequest, + output: Comment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetCommentForInformationRequestError = VantaOpError; +/** Get an information request comment by ID Retrieves a single comment on an information request by its ID. Soft-deleted comments (where `deletionDate !== null`) are included in the response. Clients should check `deletionDate` to determine whether the comment has been deleted. This matches `GET /audits/{auditId}/information-requests/{requestId}/comments`, which supports `changedSinceDate` and returns soft-deleted comments for delta sync. Comments remain fetchable when the parent information request has been soft-deleted, so delayed webhook consumers can still resolve a comment ID after the request is deleted. Rate limit: 50 requests / minute. */ +export const getCommentForInformationRequest: API.OperationMethod< + GetCommentForInformationRequestRequest, + InformationRequestComment, + GetCommentForInformationRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetCommentForInformationRequestRequest, + output: InformationRequestComment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetFrameworkCodesError = VantaOpError; +/** Get framework codes for an audit Retrieves all valid framework codes for the specified audit. This endpoint helps users discover which framework codes are available for creating and updating information requests for this audit. Use this endpoint to: - Discover available framework codes before creating information requests - Validate framework codes against the audit's framework - Get context about what framework codes are available for the audit type Rate limit: 50 requests / minute. */ +export const getFrameworkCodes: API.OperationMethod< + GetFrameworkCodesRequest, + FrameworkCodes, + GetFrameworkCodesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetFrameworkCodesRequest, + output: FrameworkCodes, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetInformationRequestError = VantaOpError; +/** Get an information request by ID Retrieves a single information request by its ID for an audit, allowing external audit management systems to fetch the latest state of a specific request without paginating through the full list. Soft-deleted records (where `deletionDate !== null`) are included in the response. Clients should check `deletionDate` to determine whether the request has been deleted. Rate limit: 50 requests / minute. */ +export const getInformationRequest: API.OperationMethod< + GetInformationRequestRequest, + InformationRequest, + GetInformationRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetInformationRequestRequest, + output: InformationRequest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetInformationRequestEvidenceError = VantaOpError; +/** Get information request evidence by ID Retrieves a single evidence item attached to an information request by its ID. This endpoint always includes soft-deleted evidence (where `deletionDate !== null`), so an evidence ID surfaced by a `changedSinceDate` delta sync stays fetchable after the evidence is deleted. Clients should check the `deletionDate` field to identify and handle deleted records appropriately in their systems. Evidence is only resolvable while its information request exists. Once the request itself is deleted, this endpoint reports the request as not found — matching `GET /audits/{auditId}/information-requests/{requestId}/evidence`. Clients reconciling a deleted request should treat its evidence as gone with it. Evidence that the customer has not shared with the auditor is reported as not found, rather than distinguishing it from an ID that does not exist. Rate limit: 250 requests / minute. */ +export const getInformationRequestEvidence: API.OperationMethod< + GetInformationRequestEvidenceRequest, + InformationRequestEvidence, + GetInformationRequestEvidenceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetInformationRequestEvidenceRequest, + output: InformationRequestEvidence, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetInformationRequestTestSnapshotEvidenceDetailError = VantaOpError; +/** Get test snapshot detail for an evidence row Retrieves the rich detail for a single VANTA_TEST_SNAPSHOT evidence row attached to an information request. The response includes test-level metadata (description, integrations, SLA), the raw test data captured at snapshot time, and the resources that were excluded from the test (out-of-scope resources). For structured snapshots, the `rawTestData` array contains one row per resource the test ran against; each row carries `resourceId`, `resourceType`, and the raw JSON for that resource. For unstructured snapshots, the `rawTestData` array contains a single row with `resourceId` and `resourceType` set to `null` and `rawJson` containing the entire test-run JSON blob. The `outOfScopeResources` field lists resources excluded at the test level (customer-disabled) and the framework level (segment configuration). Empty exclusion groups are filtered out. The `apiRequests` array contains the HTTP requests captured during API introspection tests. Empty when the test does not perform API introspection. Rate limit: 10 requests / minute. */ +export const getInformationRequestTestSnapshotEvidenceDetail: API.OperationMethod< + GetInformationRequestTestSnapshotEvidenceDetailRequest, + VantaTestSnapshotEvidenceDetail, + GetInformationRequestTestSnapshotEvidenceDetailError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetInformationRequestTestSnapshotEvidenceDetailRequest, + output: VantaTestSnapshotEvidenceDetail, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetOrganizationInformationError = VantaOpError; +/** Get organization information for an audit Retrieves organization information for an audit. This endpoint returns a single record containing the organization's business information visible to auditors during an audit engagement. Sorting and pagination are not applicable. Rate limit: 10 requests / minute. */ +export const getOrganizationInformation: API.OperationMethod< + GetOrganizationInformationRequest, + AuditOrganizationInformation, + GetOrganizationInformationError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetOrganizationInformationRequest, + output: AuditOrganizationInformation, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetOrganizationNotificationsError = VantaOpError; +/** Get organization notification settings for an audit Retrieves organization notification settings for an audit. This endpoint returns a single record containing the auditee organization's notification configuration — schedule, personnel reminder settings, and external notification subscriptions (Compliance, Vendors, Access Reviews, Trust Center). The response is a single aggregate object per domain. Sorting and pagination are not applicable. Under a controlled audit view (TRIMMED_DOWN), only CAV-approved fields are included. Rate limit: 10 requests / minute. */ +export const getOrganizationNotifications: API.OperationMethod< + GetOrganizationNotificationsRequest, + AuditOrganizationNotifications, + GetOrganizationNotificationsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetOrganizationNotificationsRequest, + output: AuditOrganizationNotifications, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAccountAccessServicesError = VantaOpError; +/** List account access services for an audit Retrieves connected account access services for an audit. Returns the list of identity providers and access integrations (such as Okta, Azure AD, Google Workspace, AWS IAM) that are connected to the organization and provide account access data for personnel. These integrations are used to verify user access and identity management during an audit engagement. Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request Results are returned in connection order. Sort order is not guaranteed and cannot be customized via query parameters. Returns 422 when the audit does not have exactly one program segment (multi-framework audits are not supported on this endpoint). Rate limit: 10 requests / minute. */ +export const listAccountAccessServices: API.OperationMethod< + ListAccountAccessServicesRequest, + PaginatedResponseAccountAccessService, + ListAccountAccessServicesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAccountAccessServicesRequest, + output: PaginatedResponseAccountAccessService, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAuditCommentsError = VantaOpError; +/** List audit comments Returns a paginated list of comments for an audit. Rate limit: 250 requests / minute. */ +export const listAuditComments: API.OperationMethod< + ListAuditCommentsRequest, + PaginatedResponseComment, + ListAuditCommentsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAuditCommentsRequest, + output: PaginatedResponseComment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAuditControlsError = VantaOpError; +/** List audit controls Returns a paginated list of controls for an audit. Rate limit: 250 requests / minute. */ +export const listAuditControls: API.OperationMethod< + ListAuditControlsRequest, + PaginatedResponseAuditorControl, + ListAuditControlsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAuditControlsRequest, + output: PaginatedResponseAuditorControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAuditEvidenceError = VantaOpError; +/** List audit evidence Returns a paginated list of evidence for an audit. Rate limit: 250 requests / minute. */ +export const listAuditEvidence: API.OperationMethod< + ListAuditEvidenceRequest, + PaginatedResponseEvidence, + ListAuditEvidenceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAuditEvidenceRequest, + output: PaginatedResponseEvidence, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAuditEvidenceUrlsError = VantaOpError; +/** List audit evidence url Returns a paginated list of evidence urls for an audit. This endpoint should be called whenever an evidence is created or has a statusUpdatedAt field that is more recent than the most recent polling event. Evidence must be in one of the following states to retrieve URLs: "Ready for audit", "Accepted", "Flagged", or "NA". Returns 422 when the audit does not have exactly one program segment (multi-framework audits are not supported on this endpoint). Rate limit: 600 requests / minute. */ +export const listAuditEvidenceUrls: API.OperationMethod< + ListAuditEvidenceUrlsRequest, + PaginatedResponseEvidenceUrl, + ListAuditEvidenceUrlsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAuditEvidenceUrlsRequest, + output: PaginatedResponseEvidenceUrl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAuditIssuesError = VantaOpError; +/** List snapshotted issues for an audit Retrieves a list of all issues that have been shared with an audit. The issues returned are immutable, point-in-time snapshots; there may be duplicates of issues that have been snapshotted at different times. The GET /audits/{auditId}/issues/snapshots endpoint can be used to retrieve metadata about the snapshots that issues belong to. Issues represent compliance findings from a variety of sources that need to be tracked and remediated. Supports filtering by: - `search`: full text search across issue title and description - `snapshotId`: filtering to a specific snapshot or snapshots, which represent point-in-time captures of issues. Use the GET /audits/{auditId}/issues/snapshots endpoint to retrieve snapshot IDs and metadata. - `createdAfterDate` / `createdBeforeDate`: filter to issues created within a date range (inclusive) - `detectedAfterDate` / `detectedBeforeDate`: filter to issues detected within a date range (inclusive) Results are sorted by issue creation date in descending order (newest first) by default. Use `orderBy` and `orderDirection` to customize sorting. Sort parameters must remain consistent across paginated requests. Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request Rate limit: 10 requests / minute. */ +export const listAuditIssues: API.OperationMethod< + ListAuditIssuesRequest, + PaginatedResponseIssueSnapshotItem, + ListAuditIssuesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAuditIssuesRequest, + output: PaginatedResponseIssueSnapshotItem, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAuditRisksError = VantaOpError; +/** List risks for an audit Retrieves risk population data for an audit. This endpoint provides access to the risk records visible to auditors during an audit engagement. Risk data is scoped to a specific risk assessment snapshot identified by the `snapshotId` parameter. Only Controlled Audit View (CAV) audits are supported. Full Audit View audits are rejected with 403. Supports filtering by: - `search`: Searches risk scenario descriptions (case-insensitive) Results are sorted by identified date (newest first) by default. Use `orderBy` and `orderDirection` to customize sorting. Sort parameters must remain consistent across paginated requests. Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request Rate limit: 10 requests / minute. */ +export const listAuditRisks: API.OperationMethod< + ListAuditRisksRequest, + PaginatedResponseAuditRisk, + ListAuditRisksError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAuditRisksRequest, + output: PaginatedResponseAuditRisk, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAuditsError = VantaOpError; +/** List audits Returns a paginated list of audits scoped to the audit firm. To identify IRL (Information Request List) audits, check for the presence of the `auditorRequestListMetadata` field. This field is only present for IRL-based audits and will be `undefined` for standard audits. Each audit includes `segments`, the audit's scope. A live single-framework audit has one entry; a live multi-framework audit has one entry per in-scope framework (and business unit or system, when applicable). Soft-deleted audits return an empty list. The top-level `framework` field is deprecated; use `segments` for framework identity. Rate limit: 250 requests / minute. */ +export const listAudits: API.OperationMethod< + ListAuditsRequest, + PaginatedResponseAudit, + ListAuditsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAuditsRequest, + output: PaginatedResponseAudit, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAuditSnapshotsError = VantaOpError; +/** List snapshotted issues for an audit Retrieves a list of snapshots that have been shared with an audit. The snapshots returned contain metadata about point-in-time captures of issues for an audit. This data can be used to filter down the list of issues to specific snapshots when querying the GET /audits/{auditId}/issues/items endpoint. Supports filtering by: - `search`: full text search across snapshot title and description Results are sorted by snapshot creation date in descending order (newest first). Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request Rate limit: 10 requests / minute. */ +export const listAuditSnapshots: API.OperationMethod< + ListAuditSnapshotsRequest, + PaginatedResponseIssueSnapshotMetadata, + ListAuditSnapshotsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAuditSnapshotsRequest, + output: PaginatedResponseIssueSnapshotMetadata, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListCodeChangesError = VantaOpError; +/** List code changes for an audit Retrieves code changes population data for an audit. This endpoint provides access to code change records (pull requests) visible to auditors during an audit engagement. Supports filtering by: - `search`: Searches code change titles and repository names (case-insensitive) - `sourcesMatchesAny`: Filters by version control source (accepted values: github, gitlab, bitbucket, azuredevops) - `closedAfterDate` / `closedBeforeDate`: Filters by the closed date range Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request Results are sorted by closed date (newest first). This sort order is fixed and cannot be customized via query parameters. Returns 422 when the audit does not have exactly one program segment (multi-framework audits are not supported on this endpoint). Rate limit: 10 requests / minute. */ +export const listCodeChanges: API.OperationMethod< + ListCodeChangesRequest, + PaginatedResponseCodeChange, + ListCodeChangesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListCodeChangesRequest, + output: PaginatedResponseCodeChange, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListCommentsForControlError = VantaOpError; +/** List comments for a control within an audit Retrieves a paginated list of comments on a control within an IRL audit, enabling auditors to view collaboration history on the control. This endpoint always includes soft-deleted records (where `deletionDate !== null`). Clients should check the `deletionDate` field to identify and handle deleted records appropriately in their systems. This endpoint supports delta synchronization via the `changedSinceDate` parameter, allowing efficient polling for changes without retrieving the entire dataset. Returns 404 when the control is not part of the audit. Pagination usage: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` to see if more data exists 3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request 4. Repeat until `hasNextPage` is false Delta sync usage: 1. Store the timestamp of your last sync 2. Pass that timestamp as `changedSinceDate` 3. Only comments created, modified, or deleted since that timestamp are returned 4. Process updates, including soft-deletes (deletionDate !== null) 5. Update your last sync timestamp to the current time Rate limit: 50 requests / minute. */ +export const listCommentsForControl: API.OperationMethod< + ListCommentsForControlRequest, + PaginatedResponseAuditControlComment, + ListCommentsForControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListCommentsForControlRequest, + output: PaginatedResponseAuditControlComment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListCommentsForInformationRequestError = VantaOpError; +/** List comments for an information request Retrieves a paginated list of comments for an information request, enabling auditors to view communication history and collaborate with customers. This endpoint always includes soft-deleted records (where `deletionDate !== null`). Clients should check the `deletionDate` field to identify and handle deleted records appropriately in their systems. This endpoint supports delta synchronization via the `changedSinceDate` parameter, allowing efficient polling for changes without retrieving the entire dataset. Pagination usage: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` to see if more data exists 3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request 4. Repeat until `hasNextPage` is false Delta sync usage: 1. Store the timestamp of your last sync 2. Pass that timestamp as `changedSinceDate` 3. Only comments created, modified, or deleted since that timestamp are returned 4. Process updates, including soft-deletes (deletionDate !== null) 5. Update your last sync timestamp to the current time Rate limit: 50 requests / minute. */ +export const listCommentsForInformationRequest: API.OperationMethod< + ListCommentsForInformationRequestRequest, + PaginatedResponseInformationRequestComment, + ListCommentsForInformationRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListCommentsForInformationRequestRequest, + output: PaginatedResponseInformationRequestComment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListInformationRequestActivityError = VantaOpError; +/** List information request activity Retrieves a paginated list of activity logs for an information request, providing a complete audit trail of all changes and actions. This endpoint supports delta synchronization via the `changedSinceDate` parameter, allowing efficient polling for changes without retrieving the entire dataset. Pagination usage: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` to see if more data exists 3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request 4. Repeat until `hasNextPage` is false Delta sync usage: 1. Store the timestamp of your last sync 2. Pass that timestamp as `changedSinceDate` 3. Only activity created since that timestamp is returned 4. Process updates to track all changes to the information request 5. Update your last sync timestamp to the current time Rate limit: 50 requests / minute. */ +export const listInformationRequestActivity: API.OperationMethod< + ListInformationRequestActivityRequest, + PaginatedResponseInformationRequestActivityLog, + ListInformationRequestActivityError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListInformationRequestActivityRequest, + output: PaginatedResponseInformationRequestActivityLog, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListInformationRequestEvidenceError = VantaOpError; +/** List evidence for an information request Retrieves a paginated list of all evidence attached to an information request, enabling auditors to review evidence submitted by customers. This endpoint always includes soft-deleted records (where `deletionDate !== null`). Clients should check the `deletionDate` field to identify and handle deleted records appropriately in their systems. This endpoint supports delta synchronization via the `changedSinceDate` parameter, allowing efficient polling for changes without retrieving the entire dataset. Pagination usage: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` to see if more data exists 3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request 4. Repeat until `hasNextPage` is false Delta sync usage: 1. Store the timestamp of your last sync 2. Pass that timestamp as `changedSinceDate` 3. Only evidence created, modified, shared, or deleted since that timestamp is returned 4. Process updates, including soft-deletes (deletionDate !== null) 5. Update your last sync timestamp to the current time Rate limit: 50 requests / minute. */ +export const listInformationRequestEvidence: API.OperationMethod< + ListInformationRequestEvidenceRequest, + PaginatedResponseInformationRequestEvidence, + ListInformationRequestEvidenceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListInformationRequestEvidenceRequest, + output: PaginatedResponseInformationRequestEvidence, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListInformationRequestsError = VantaOpError; +/** List information requests for an audit Retrieves a paginated list of all information requests for an audit, enabling external audit management systems to display and track evidence requests. This endpoint always includes soft-deleted records (where `deletionDate !== null`). Clients should check the `deletionDate` field to identify and handle deleted records appropriately in their systems. This endpoint supports delta synchronization via the `changedSinceDate` parameter, allowing efficient polling for changes without retrieving the entire dataset. Pagination usage: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` to see if more data exists 3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request 4. Repeat until `hasNextPage` is false Delta sync usage: 1. Store the timestamp of your last sync 2. Pass that timestamp as `changedSinceDate` 3. Only requests created, modified, or deleted since that timestamp are returned 4. Process updates and soft-deletes by checking the `deletionDate` field 5. Update your last sync timestamp to the current time Rate limit: 50 requests / minute. */ +export const listInformationRequests: API.OperationMethod< + ListInformationRequestsRequest, + PaginatedResponseInformationRequest, + ListInformationRequestsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListInformationRequestsRequest, + output: PaginatedResponseInformationRequest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListInformationRequestsForControlError = VantaOpError; +/** List information requests linked to a control within an audit Returns a paginated list of active information requests linked to a specific control within an IRL audit. An information request is linked to a control either via its framework codes (`criteriaIds`) or via a direct association (`additionalControlIds`). Soft-deleted information requests are not included in the response. To synchronize deletions, use `GET /audits/{auditId}/information-requests`, which supports `changedSinceDate` and includes soft-deleted records. Returns 404 when the control is not part of the audit. Returns an empty page when the control is part of the audit but has no active IRLs linked to it. Pagination usage: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` to see if more data exists 3. If true, use `results.pageInfo.endCursor` as `pageCursor` in next request 4. Repeat until `hasNextPage` is false Rate limit: 50 requests / minute. */ +export const listInformationRequestsForControl: API.OperationMethod< + ListInformationRequestsForControlRequest, + PaginatedResponseInformationRequest, + ListInformationRequestsForControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListInformationRequestsForControlRequest, + output: PaginatedResponseInformationRequest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListIntegrationsError = VantaOpError; +/** List integrations for an audit Retrieves integration population data for an audit. This endpoint provides access to integration records visible to auditors during an audit engagement. Integrations represent connected services (e.g., GitHub, AWS, Slack) that provide data for the audit. Supports filtering by: - `search`: Searches integration names (case-insensitive) - `tagsMatchesAny`: Filters by integration tag (ACCESS, COMPUTERS, etc.) - `categoriesMatchesAny`: Filters by category (CLOUD_PROVIDER, HR_PROVIDER, etc.) Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request Results are sorted by integration display name (ascending). This sort order is fixed and cannot be customized via query parameters. Rate limit: 10 requests / minute. */ +export const listIntegrations: API.OperationMethod< + ListIntegrationsRequest, + PaginatedResponseAuditIntegration, + ListIntegrationsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListIntegrationsRequest, + output: PaginatedResponseAuditIntegration, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListPersonnelAccountAccessError = VantaOpError; +/** List account access records for an audit Retrieves account access population data for an audit. This endpoint provides access to account access records visible to auditors during an audit engagement. Account access data comes from various sources: - **IDP Services** (Identity Providers): Okta, Azure AD, Google Workspace, OneLogin, PingOne - Returns user accounts from identity providers - Supports filtering by search and status - **Role Grants Services**: GCP, Azure (when role grants are enabled) - Returns accounts with role-based access grants - Supports filtering by search and status - **First-Party Account Services**: AWS, Oracle Cloud, Azure (when not using role grants), etc. - Returns cloud provider account access records - Supports filtering by search and status - **Received Account Services**: External applications (Jira, GitHub, Slack, etc.) - Returns user accounts from third-party integrations - Supports filtering by search and status Supports filtering by: - `search`: Searches account names/emails (case-insensitive) - `status`: Filters by account status Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request The default sort order depends on the service type: - Identity provider services (e.g. Okta, Azure AD): sorted by email, ascending - Cloud provider services (e.g. AWS, GCP): sorted by account name, ascending - Role grant services: sorted by account name, ascending - Third-party application services (e.g. GitHub, Jira): sorted by account name, ascending Sort order cannot be customized via query parameters. Returns 422 when the audit does not have exactly one program segment (multi-framework audits are not supported on this endpoint). Rate limit: 10 requests / minute. */ +export const listPersonnelAccountAccess: API.OperationMethod< + ListPersonnelAccountAccessRequest, + PaginatedResponseAccountAccess, + ListPersonnelAccountAccessError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListPersonnelAccountAccessRequest, + output: PaginatedResponseAccountAccess, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListPersonnelGroupsError = VantaOpError; +/** List groups for an audit Retrieves groups population data for an audit. This endpoint provides access to the group records visible to auditors during an audit engagement. Groups represent organizational units that contain people, either imported from an identity provider (IDP) or created manually in Vanta. Only Controlled Audit View (CAV) audits are supported. Full Audit View audits are rejected with 403. Supports filtering by: - `search`: Searches group names (case-insensitive) - `sourcesMatchesAny`: Filters by IDP source service names Results are sorted by name (ascending) by default. Use `orderBy` and `orderDirection` to customize sorting. Sort parameters must remain consistent across paginated requests. Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request Rate limit: 10 requests / minute. */ +export const listPersonnelGroups: API.OperationMethod< + ListPersonnelGroupsRequest, + PaginatedResponsePersonnelGroup, + ListPersonnelGroupsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListPersonnelGroupsRequest, + output: PaginatedResponsePersonnelGroup, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListPersonnelPeopleError = VantaOpError; +/** List people for an audit Retrieves people population data for an audit. This endpoint provides access to the people records visible to auditors during an audit engagement. Only Controlled Audit View (CAV) audits are supported. Full Audit View audits are rejected with 403. Supports filtering by: - `search`: Searches names and email addresses - `status`: Filters by employment status - `groupsMatchesAny`: Filter people by group/role IDs Results are sorted by name (ascending) by default. Use `orderBy` and `orderDirection` to customize sorting. Sort parameters must remain consistent across paginated requests. Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request Rate limit: 10 requests / minute. */ +export const listPersonnelPeople: API.OperationMethod< + ListPersonnelPeopleRequest, + PaginatedResponsePersonnelPerson, + ListPersonnelPeopleError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListPersonnelPeopleRequest, + output: PaginatedResponsePersonnelPerson, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListRiskSnapshotsError = VantaOpError; +/** List risk snapshots for an audit Returns a paginated list of risk assessment snapshots available for an audit. Risk snapshots capture the state of an organization's risk register at a point in time. Each snapshot has an `id` that can be used with the `/audits/{auditId}/risks` endpoint to retrieve the individual risk scenarios within that snapshot. Results are sorted by creation date (newest first). This sort order is fixed and cannot be customized via query parameters. Only snapshots that are shared with auditors are included. Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request Rate limit: 10 requests / minute. */ +export const listRiskSnapshots: API.OperationMethod< + ListRiskSnapshotsRequest, + PaginatedResponseRiskSnapshot, + ListRiskSnapshotsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListRiskSnapshotsRequest, + output: PaginatedResponseRiskSnapshot, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListVendorsError = VantaOpError; +/** List vendors for an audit Retrieves vendor population data for an audit. This endpoint provides access to vendor records visible to auditors during an audit engagement. Supports filtering by: - `search`: Searches vendor names (case-insensitive) - `vendorStatusesMatchesAny`: Filters by vendor status (ACTIVE, ARCHIVED, IN_PROCUREMENT) - `inherentRiskMatchesAny`: Filters by inherent risk level Results are sorted by name (ascending) by default. Use `orderBy` and `orderDirection` to customize sorting. Sort parameters must remain consistent across paginated requests. Uses cursor-based pagination. To paginate: 1. Make initial request with desired `pageSize` 2. Check `results.pageInfo.hasNextPage` 3. Use `results.pageInfo.endCursor` as `pageCursor` for next request Rate limit: 10 requests / minute. */ +export const listVendors: API.OperationMethod< + ListVendorsRequest, + PaginatedResponseAuditVendor, + ListVendorsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListVendorsRequest, + output: PaginatedResponseAuditVendor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ShareInformationRequestListError = VantaOpError; +/** Share information request list with customer Shares the current information request list for an audit with the customer organization, making it visible in their portal. This action allows the customer to see all information requests that have been created for their audit. Only IRL audits are supported. Rate limit: 50 requests / minute. */ +export const shareInformationRequestList: API.OperationMethod< + ShareInformationRequestListRequest, + Audit, + ShareInformationRequestListError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ShareInformationRequestListRequest, + output: Audit, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateAuditEvidenceError = VantaOpError; +/** Update audit evidence Update audit evidence. Rate limit: 50 requests / minute. */ +export const updateAuditEvidence: API.OperationMethod< + UpdateAuditEvidenceRequest, + Evidence, + UpdateAuditEvidenceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateAuditEvidenceRequest, + output: Evidence, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateCommentForControlError = VantaOpError; +/** Update a comment for a control within an audit Updates an existing comment on a control. Only the original author of the comment can update it. The author is identified by their email address, which must match the email of the user who created the comment. Rate limit: 10 requests / minute. */ +export const updateCommentForControl: API.OperationMethod< + UpdateCommentForControlRequest, + AuditControlComment, + UpdateCommentForControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateCommentForControlRequest, + output: AuditControlComment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateCommentForInformationRequestError = VantaOpError; +/** Update a comment for an information request Updates an existing comment for an information request. Only the original author of the comment can update it. The author is identified by their email address, which must match the email of the user who created the comment. Rate limit: 25 requests / minute. */ +export const updateCommentForInformationRequest: API.OperationMethod< + UpdateCommentForInformationRequestRequest, + InformationRequestComment, + UpdateCommentForInformationRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateCommentForInformationRequestRequest, + output: InformationRequestComment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateInformationRequestError = VantaOpError; +/** Update an information request for an audit Updates an existing information request for an audit, allowing modification of request details as audit requirements evolve. Supports partial updates where only specified fields are changed; omitted fields remain unchanged. Common use cases: - Updating due dates as audit timelines shift - Refining descriptions to clarify requirements - Adjusting request type Note: The `modificationDate` is automatically updated to the current timestamp when any field is changed. Rate limit: 50 requests / minute. */ +export const updateInformationRequest: API.OperationMethod< + UpdateInformationRequestRequest, + InformationRequest, + UpdateInformationRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateInformationRequestRequest, + output: InformationRequest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpsertAssessmentForControlError = VantaOpError; +/** Upsert a control's assessment within an audit Records (upserts) an auditor's assessment state and justification for a control within an IRL audit — the API equivalent of assessing a control in the web app. Overwrites the single assessment for this control in the audit's program segment. The `assessmentState` must be valid for the segment's framework (the request is rejected otherwise). The acting auditor is identified by `auditorEmail`, which must belong to the audit firm making the request. Returns 404 when the control is not part of the audit or the auditor email does not resolve to a firm user. Returns 422 when the audit does not have exactly one program segment (multi-framework audits are not supported on this endpoint). Applies to both Full and Controlled Audit View audits. Rate limit: 10 requests / minute. */ +export const upsertAssessmentForControl: API.OperationMethod< + UpsertAssessmentForControlRequest, + AuditorControlAssessment, + UpsertAssessmentForControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpsertAssessmentForControlRequest, + output: AuditorControlAssessment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); diff --git a/packages/vanta/src/services/build_integrations.ts b/packages/vanta/src/services/build_integrations.ts new file mode 100644 index 000000000..91cb89380 --- /dev/null +++ b/packages/vanta/src/services/build_integrations.ts @@ -0,0 +1,3788 @@ +// AUTO-GENERATED by scripts/generate.ts from .generated-specs (specs/spec-mirror-vanta). Do not edit. +import * as S from "@distilled.cloud/core/schema"; +import * as Redacted from "effect/Redacted"; +import * as API from "@distilled.cloud/core/api"; +import * as T from "../traits.ts"; +import { + VantaProtocol, + type VantaOpError, + type VantaOpContext, +} from "../protocol.ts"; +import { UnknownVantaError } from "../errors.ts"; +import * as Retry from "../retry.ts"; + +export type { VantaOpError, VantaOpContext }; + +export interface GetApiEndpointVulnerabilityConnectorsRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetApiEndpointVulnerabilityConnectorsRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ + method: "GET", + uri: "/v1/resources/api_endpoint_vulnerability_connectors", + code: 200, + }), + ), + ).annotate({ + identifier: "GetApiEndpointVulnerabilityConnectorsRequest", + }) as any as S.Schema; + +export interface GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsItem { + /** The API query param key associated with this vulnerability occurrence. */ + key: string; + /** The API query param value associated with this vulnerability occurrence. */ + value: string; +} +export const GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + key: S.String, + value: S.String, + }), + ).annotate({ + identifier: + "GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsItem", + }) as any as S.Schema; + +/** The API params associated with this vulnerability. */ +export type GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsList = + Array; +export const GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsList = + /*@__PURE__*/ S.Array( + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsItem, + ) as any as S.Schema; + +export interface GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersItem { + /** The API header key associated with this vulnerability occurrence. */ + key: string; + /** The API header value associated with this vulnerability occurrence. */ + value: string; +} +export const GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + key: S.String, + value: S.String, + }), + ).annotate({ + identifier: + "GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersItem", + }) as any as S.Schema; + +/** The API headers associated with this vulnerability. */ +export type GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersList = + Array; +export const GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersList = + /*@__PURE__*/ S.Array( + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersItem, + ) as any as S.Schema; + +export interface GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItem { + /** Markdown description of this API endpoint vulnerability occurrence. */ + description: string; + /** The API endpoint URL associated with this vulnerability occurrence. */ + fromUrl?: string; + /** The API params associated with this vulnerability. */ + queryParams?: GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsList; + /** The API headers associated with this vulnerability. */ + headers?: GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersList; + /** The body of the request passed to the API, with sensitive information redacted. */ + body?: string; +} +export const GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + description: S.String, + fromUrl: S.optional(S.String), + queryParams: S.optional( + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsList, + ), + headers: S.optional( + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersList, + ), + body: S.optional(S.String), + }), + ).annotate({ + identifier: + "GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItem", + }) as any as S.Schema; + +/** A list of occurrences of vulnerable API endpoints. */ +export type GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesList = + Array; +export const GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesList = + /*@__PURE__*/ S.Array( + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItem, + ) as any as S.Schema; + +export interface GetApiEndpointVulnerabilityConnectorsResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** A list of occurrences of vulnerable API endpoints. */ + occurrences: GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesList; + /** The severity of the vulnerability, on a scale of 0 to 10. This will be rounded to the nearest tenth. */ + severity: number; + /** A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`. */ + vulnerableComponentUniqueId: string; + /** A description of the vulnerability. */ + description: string; + /** Instructions for remediating the vulnerability. */ + remediationInstructions: string; + /** The vulnerable URL. */ + url: string; + /** The HTTP method (eg: GET, POST) associated with this vulnerability. */ + httpMethod: string; + /** The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional. */ + cveId?: string; + /** The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional. */ + cvss3Vector?: string; + /** The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional. */ + cvss3Score?: number; +} +export const GetApiEndpointVulnerabilityConnectorsResponseResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + occurrences: + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesList, + severity: S.Number, + vulnerableComponentUniqueId: S.String, + description: S.String, + remediationInstructions: S.String, + url: S.String, + httpMethod: S.String, + cveId: S.optional(S.String), + cvss3Vector: S.optional(S.String), + cvss3Score: S.optional(S.Number), + }), + ).annotate({ + identifier: "GetApiEndpointVulnerabilityConnectorsResponseResourcesItem", + }) as any as S.Schema; + +export type GetApiEndpointVulnerabilityConnectorsResponseResourcesList = + Array; +export const GetApiEndpointVulnerabilityConnectorsResponseResourcesList = + /*@__PURE__*/ S.Array( + GetApiEndpointVulnerabilityConnectorsResponseResourcesItem, + ) as any as S.Schema; + +export interface GetApiEndpointVulnerabilityConnectorsResponse { + resources?: GetApiEndpointVulnerabilityConnectorsResponseResourcesList; +} +export const GetApiEndpointVulnerabilityConnectorsResponse = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional( + GetApiEndpointVulnerabilityConnectorsResponseResourcesList, + ), + }), + ).annotate({ + identifier: "GetApiEndpointVulnerabilityConnectorsResponse", + }) as any as S.Schema; + +export interface GetBackgroundCheckConnectorRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetBackgroundCheckConnectorRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ + method: "GET", + uri: "/v1/resources/background_check_connector", + code: 200, + }), + ), +).annotate({ + identifier: "GetBackgroundCheckConnectorRequest", +}) as any as S.Schema; + +/** The current status of the background check. */ +export type GetBackgroundCheckConnectorResponseResourcesItemStatus = + | "INCOMPLETE" + | "IN_PROGRESS" + | "COMPLETE"; +export const GetBackgroundCheckConnectorResponseResourcesItemStatus = + /*@__PURE__*/ S.String; + +export interface GetBackgroundCheckConnectorResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** The full name of the employee or contractor undergoing the background check. */ + fullName: string; + /** The email address of the employee or contractor undergoing the background check. */ + email: string; + /** The current status of the background check. */ + status: GetBackgroundCheckConnectorResponseResourcesItemStatus; + /** If complete, the date of completion of the background check. */ + completionDate?: string; +} +export const GetBackgroundCheckConnectorResponseResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + fullName: S.String, + email: S.String, + status: GetBackgroundCheckConnectorResponseResourcesItemStatus, + completionDate: S.optional(S.String), + }), + ).annotate({ + identifier: "GetBackgroundCheckConnectorResponseResourcesItem", + }) as any as S.Schema; + +export type GetBackgroundCheckConnectorResponseResourcesList = + Array; +export const GetBackgroundCheckConnectorResponseResourcesList = + /*@__PURE__*/ S.Array( + GetBackgroundCheckConnectorResponseResourcesItem, + ) as any as S.Schema; + +export interface GetBackgroundCheckConnectorResponse { + resources?: GetBackgroundCheckConnectorResponseResourcesList; +} +export const GetBackgroundCheckConnectorResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional(GetBackgroundCheckConnectorResponseResourcesList), + }), +).annotate({ + identifier: "GetBackgroundCheckConnectorResponse", +}) as any as S.Schema; + +export interface GetCustomResourceRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetCustomResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ method: "GET", uri: "/v1/resources/custom_resource", code: 200 }), + ), +).annotate({ + identifier: "GetCustomResourceRequest", +}) as any as S.Schema; + +export interface GetCustomResourceResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; +} +export const GetCustomResourceResponseResourcesItem = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + }), +).annotate({ + identifier: "GetCustomResourceResponseResourcesItem", +}) as any as S.Schema; + +export type GetCustomResourceResponseResourcesList = + Array; +export const GetCustomResourceResponseResourcesList = /*@__PURE__*/ S.Array( + GetCustomResourceResponseResourcesItem, +) as any as S.Schema; + +export interface GetCustomResourceResponse { + resources?: GetCustomResourceResponseResourcesList; +} +export const GetCustomResourceResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional(GetCustomResourceResponseResourcesList), + }), +).annotate({ + identifier: "GetCustomResourceResponse", +}) as any as S.Schema; + +export interface GetMacosUserComputerRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetMacosUserComputerRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ + method: "GET", + uri: "/v1/resources/macos_user_computer", + code: 200, + }), + ), +).annotate({ + identifier: "GetMacosUserComputerRequest", +}) as any as S.Schema; + +export interface GetMacosUserComputerResponseResourcesItemApplicationsItem { + /** The name of the application. */ + name: string; + /** The bundle identifier of the application. */ + bundleId: string; + /** The last time the application was opened. */ + lastOpenedTimestamp?: string; +} +export const GetMacosUserComputerResponseResourcesItemApplicationsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + bundleId: S.String, + lastOpenedTimestamp: S.optional(S.String), + }), + ).annotate({ + identifier: "GetMacosUserComputerResponseResourcesItemApplicationsItem", + }) as any as S.Schema; + +/** All the installed Mac Apps on the system. */ +export type GetMacosUserComputerResponseResourcesItemApplicationsList = + Array; +export const GetMacosUserComputerResponseResourcesItemApplicationsList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemApplicationsItem, + ) as any as S.Schema; + +/** The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum. */ +export type GetMacosUserComputerResponseResourcesItemBrowserExtensionsItemBrowser = + | "CHROME" + | "FIREFOX" + | "OPERA" + | "SAFARI" + | "EDGE"; +export const GetMacosUserComputerResponseResourcesItemBrowserExtensionsItemBrowser = + /*@__PURE__*/ S.String; + +export interface GetMacosUserComputerResponseResourcesItemBrowserExtensionsItem { + /** The identifier of the browser extension. */ + extensionId: string; + /** The name of the browser extension. */ + name: string; + /** The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum. */ + browser: GetMacosUserComputerResponseResourcesItemBrowserExtensionsItemBrowser; +} +export const GetMacosUserComputerResponseResourcesItemBrowserExtensionsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + extensionId: S.String, + name: S.String, + browser: + GetMacosUserComputerResponseResourcesItemBrowserExtensionsItemBrowser, + }), + ).annotate({ + identifier: + "GetMacosUserComputerResponseResourcesItemBrowserExtensionsItem", + }) as any as S.Schema; + +/** A list of browser extensions on this device. Used to match against known password managers to demonstrate use. */ +export type GetMacosUserComputerResponseResourcesItemBrowserExtensionsList = + Array; +export const GetMacosUserComputerResponseResourcesItemBrowserExtensionsList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemBrowserExtensionsItem, + ) as any as S.Schema; + +export interface GetMacosUserComputerResponseResourcesItemDrivesItem { + /** The name of the drive. */ + name: string; + /** Does the drive have some sort of encryption on it. */ + encrypted: boolean; + /** Does the drive have filevault enabled. */ + filevaultEnabled: boolean; + /** Metadata about the boot volume helps Vanta skip checking volumes that aren't relevant, like USB Drives. */ + isBootVolume?: boolean; +} +export const GetMacosUserComputerResponseResourcesItemDrivesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + encrypted: S.Boolean, + filevaultEnabled: S.Boolean, + isBootVolume: S.optional(S.Boolean), + }), + ).annotate({ + identifier: "GetMacosUserComputerResponseResourcesItemDrivesItem", + }) as any as S.Schema; + +/** A list of drives on this device. Used to verify encryption status. */ +export type GetMacosUserComputerResponseResourcesItemDrivesList = + Array; +export const GetMacosUserComputerResponseResourcesItemDrivesList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemDrivesItem, + ) as any as S.Schema; + +export interface GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem { + /** After the screenlock takes effect, does the user have to enter a password to access their device. */ + requiresPassword: boolean; + /** The timeout in milliseconds for screenlock to trigger. */ + screenSleepTimeoutMs: number; +} +export const GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + requiresPassword: S.Boolean, + screenSleepTimeoutMs: S.Number, + }), + ).annotate({ + identifier: + "GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem", + }) as any as S.Schema; + +/** If the source system cannot easily retrieve screenlock policies, it's OK to skip this data. */ +export type GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList = + Array; +export const GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + ) as any as S.Schema; + +export type GetMacosUserComputerResponseResourcesItemUsersItemScreenlockSettings = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const GetMacosUserComputerResponseResourcesItemUsersItemScreenlockSettings = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +export interface GetMacosUserComputerResponseResourcesItemUsersItem { + /** The user's username. Does not have to be unique. */ + username: string; + /** If the source system cannot easily retrieve screenlock policies, it's OK to skip this data. */ + screenlockPolicies: GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList; + screenlockSettings: GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + /** The last time the user logged in to the device, if available. */ + lastLoginTimestamp?: string; +} +export const GetMacosUserComputerResponseResourcesItemUsersItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + username: S.String, + screenlockPolicies: + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList, + screenlockSettings: + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + lastLoginTimestamp: S.optional(S.String), + }), + ).annotate({ + identifier: "GetMacosUserComputerResponseResourcesItemUsersItem", + }) as any as S.Schema; + +/** The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely. */ +export type GetMacosUserComputerResponseResourcesItemUsersList = + Array; +export const GetMacosUserComputerResponseResourcesItemUsersList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemUsersItem, + ) as any as S.Schema; + +export type GetMacosUserComputerResponseResourcesItemSystemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const GetMacosUserComputerResponseResourcesItemSystemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +/** System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests. */ +export type GetMacosUserComputerResponseResourcesItemSystemScreenlockPoliciesList = + Array; +export const GetMacosUserComputerResponseResourcesItemSystemScreenlockPoliciesList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + ) as any as S.Schema; + +export interface GetMacosUserComputerResponseResourcesItemPasswordPolicy { + /** If the system has a password policy, what the minimum password length requirement is. */ + minimumLengthRequirement: number; +} +export const GetMacosUserComputerResponseResourcesItemPasswordPolicy = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + minimumLengthRequirement: S.Number, + }), + ).annotate({ + identifier: "GetMacosUserComputerResponseResourcesItemPasswordPolicy", + }) as any as S.Schema; + +export interface GetMacosUserComputerResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** A timestamp that indicates when the data being sent was collected from the host computer. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field. */ + collectedTimestamp: string; + /** The OS name. Example: `MacOS Monterey`. */ + osName: string; + /** The OS version. Example: `Version 12.4`. */ + osVersion: string; + /** The hardware UUID/UDID of the device. */ + hardwareUuid: string; + /** The hardware serial number of the device. */ + serialNumber: string; + /** All the installed Mac Apps on the system. */ + applications: GetMacosUserComputerResponseResourcesItemApplicationsList; + /** A list of browser extensions on this device. Used to match against known password managers to demonstrate use. */ + browserExtensions: GetMacosUserComputerResponseResourcesItemBrowserExtensionsList; + /** A list of drives on this device. Used to verify encryption status. */ + drives: GetMacosUserComputerResponseResourcesItemDrivesList; + /** The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely. */ + users: GetMacosUserComputerResponseResourcesItemUsersList; + /** System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests. */ + systemScreenlockPolicies: GetMacosUserComputerResponseResourcesItemSystemScreenlockPoliciesList; + /** Is the system managed by a Mobile Device Management system. */ + isManaged: boolean; + /** Does the system have auto-updates enabled. */ + autoUpdatesEnabled: boolean; + /** The email address of the owner of the system, if it's known. */ + owner?: string; + passwordPolicy?: GetMacosUserComputerResponseResourcesItemPasswordPolicy; + /** A timestamp that indicates when the host computer was last enrolled within your system. If the computer has been un-enrolled and then re-enrolled, send data for the most recent enrollment. */ + lastEnrolledTimestamp?: string; + /** Is XProtect enabled on the system. */ + isXProtectEnabled?: boolean; +} +export const GetMacosUserComputerResponseResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + collectedTimestamp: S.String, + osName: S.String, + osVersion: S.String, + hardwareUuid: S.String, + serialNumber: S.String, + applications: GetMacosUserComputerResponseResourcesItemApplicationsList, + browserExtensions: + GetMacosUserComputerResponseResourcesItemBrowserExtensionsList, + drives: GetMacosUserComputerResponseResourcesItemDrivesList, + users: GetMacosUserComputerResponseResourcesItemUsersList, + systemScreenlockPolicies: + GetMacosUserComputerResponseResourcesItemSystemScreenlockPoliciesList, + isManaged: S.Boolean, + autoUpdatesEnabled: S.Boolean, + owner: S.optional(S.String), + passwordPolicy: S.optional( + GetMacosUserComputerResponseResourcesItemPasswordPolicy, + ), + lastEnrolledTimestamp: S.optional(S.String), + isXProtectEnabled: S.optional(S.Boolean), + }), + ).annotate({ + identifier: "GetMacosUserComputerResponseResourcesItem", + }) as any as S.Schema; + +export type GetMacosUserComputerResponseResourcesList = + Array; +export const GetMacosUserComputerResponseResourcesList = /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItem, +) as any as S.Schema; + +export interface GetMacosUserComputerResponse { + resources?: GetMacosUserComputerResponseResourcesList; +} +export const GetMacosUserComputerResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional(GetMacosUserComputerResponseResourcesList), + }), +).annotate({ + identifier: "GetMacosUserComputerResponse", +}) as any as S.Schema; + +export interface GetPackageVulnerabilityConnectorsRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetPackageVulnerabilityConnectorsRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ + method: "GET", + uri: "/v1/resources/package_vulnerability_connectors", + code: 200, + }), + ), +).annotate({ + identifier: "GetPackageVulnerabilityConnectorsRequest", +}) as any as S.Schema; + +export interface GetPackageVulnerabilityConnectorsResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** The name of the package associated with the vulnerability. */ + packageName: string; + /** The version of the package associated with the vulnerability. */ + packageVersion: string; + /** The severity of the vulnerability, on a scale of 0 to 10. This will be rounded to the nearest tenth. */ + severity: number; + /** A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`. */ + vulnerableComponentUniqueId: string; + /** A description of the vulnerability. */ + description: string; + /** Whether the vulnerability can be resolved. */ + isResolvable: boolean; + /** Instructions for remediating the vulnerability. */ + remediationInstructions: string; + /** Whether there is a code path to the vulnerable code in this package. This field is optional. */ + isReachable?: boolean; + /** The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional. */ + cveId?: string; + /** The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional. */ + cvss3Vector?: string; + /** The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional. */ + cvss3Score?: number; +} +export const GetPackageVulnerabilityConnectorsResponseResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + packageName: S.String, + packageVersion: S.String, + severity: S.Number, + vulnerableComponentUniqueId: S.String, + description: S.String, + isResolvable: S.Boolean, + remediationInstructions: S.String, + isReachable: S.optional(S.Boolean), + cveId: S.optional(S.String), + cvss3Vector: S.optional(S.String), + cvss3Score: S.optional(S.Number), + }), + ).annotate({ + identifier: "GetPackageVulnerabilityConnectorsResponseResourcesItem", + }) as any as S.Schema; + +export type GetPackageVulnerabilityConnectorsResponseResourcesList = + Array; +export const GetPackageVulnerabilityConnectorsResponseResourcesList = + /*@__PURE__*/ S.Array( + GetPackageVulnerabilityConnectorsResponseResourcesItem, + ) as any as S.Schema; + +export interface GetPackageVulnerabilityConnectorsResponse { + resources?: GetPackageVulnerabilityConnectorsResponseResourcesList; +} +export const GetPackageVulnerabilityConnectorsResponse = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional( + GetPackageVulnerabilityConnectorsResponseResourcesList, + ), + }), + ).annotate({ + identifier: "GetPackageVulnerabilityConnectorsResponse", + }) as any as S.Schema; + +export interface GetSecretRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetSecretRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe(T.Http({ method: "GET", uri: "/v1/resources/secret", code: 200 })), +).annotate({ + identifier: "GetSecretRequest", +}) as any as S.Schema; + +export interface GetSecretResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** The name of the secret. */ + name: string; + /** A short description of the secret, if any. */ + description: string; + /** When the secret was created. */ + createdTimestamp: string; + /** The creator of the secret. */ + creator: string; + /** The current owner of the secret. Vanta will check that every secret has a valid owner. */ + owner: string; + /** When the secret was last updated. */ + updatedTimestamp?: string; + /** When the secret was last accessed. */ + lastAccessedTimestamp?: string; + /** When the secret is set to expire, if relevant. */ + expiresTimestamp?: string; +} +export const GetSecretResponseResourcesItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + name: S.String, + description: S.String, + createdTimestamp: S.String, + creator: S.String, + owner: S.String, + updatedTimestamp: S.optional(S.String), + lastAccessedTimestamp: S.optional(S.String), + expiresTimestamp: S.optional(S.String), + }), +).annotate({ + identifier: "GetSecretResponseResourcesItem", +}) as any as S.Schema; + +export type GetSecretResponseResourcesList = + Array; +export const GetSecretResponseResourcesList = /*@__PURE__*/ S.Array( + GetSecretResponseResourcesItem, +) as any as S.Schema; + +export interface GetSecretResponse { + resources?: GetSecretResponseResourcesList; +} +export const GetSecretResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional(GetSecretResponseResourcesList), + }), +).annotate({ + identifier: "GetSecretResponse", +}) as any as S.Schema; + +export interface GetSecurityTaskRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetSecurityTaskRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ method: "GET", uri: "/v1/resources/security_task", code: 200 }), + ), +).annotate({ + identifier: "GetSecurityTaskRequest", +}) as any as S.Schema; + +/** The status of the task. If your application supports additional states, use the closest approximation. */ +export type GetSecurityTaskResponseResourcesItemTaskState = + | "OPEN" + | "IN_PROGRESS" + | "CLOSED"; +export const GetSecurityTaskResponseResourcesItemTaskState = + /*@__PURE__*/ S.String; + +/** Priorities are mapped against SLAs for tasks. If your task system does not have fixed priorities, consider letting users configure priorities through labels. */ +export type GetSecurityTaskResponseResourcesItemPriority = + | "P0" + | "P1" + | "P2" + | "P3" + | "P4"; +export const GetSecurityTaskResponseResourcesItemPriority = + /*@__PURE__*/ S.String; + +/** The set of users assigned to the tasks. Emails do not necessarily need to be Vanta users. */ +export type GetSecurityTaskResponseResourcesItemAssigneesList = Array; +export const GetSecurityTaskResponseResourcesItemAssigneesList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** The set of task tags or labels. */ +export type GetSecurityTaskResponseResourcesItemLabelsList = Array; +export const GetSecurityTaskResponseResourcesItemLabelsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface GetSecurityTaskResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** The task ID, as present in the source application. This will be shown in Vanta to help customers match tasks if necessary. */ + taskId: string; + /** The title of the task, as present in the source application. This will be shown in Vanta to help customers match tasks if necessary. */ + taskTitle: string; + /** When the task was created. */ + createdTimestamp: string; + /** The status of the task. If your application supports additional states, use the closest approximation. */ + taskState: GetSecurityTaskResponseResourcesItemTaskState; + /** Priorities are mapped against SLAs for tasks. If your task system does not have fixed priorities, consider letting users configure priorities through labels. */ + priority: GetSecurityTaskResponseResourcesItemPriority; + /** The set of users assigned to the tasks. Emails do not necessarily need to be Vanta users. */ + assignees: GetSecurityTaskResponseResourcesItemAssigneesList; + /** The creator of the task. */ + creator: string; + /** The set of task tags or labels. */ + labels: GetSecurityTaskResponseResourcesItemLabelsList; + /** When the task was closed, if the task was closed. Required if `taskState` is `CLOSED`, otherwise must be absent. */ + closedTimestamp?: string; + /** When the task was last updated. */ + updatedTimestamp?: string; +} +export const GetSecurityTaskResponseResourcesItem = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + taskId: S.String, + taskTitle: S.String, + createdTimestamp: S.String, + taskState: GetSecurityTaskResponseResourcesItemTaskState, + priority: GetSecurityTaskResponseResourcesItemPriority, + assignees: GetSecurityTaskResponseResourcesItemAssigneesList, + creator: S.String, + labels: GetSecurityTaskResponseResourcesItemLabelsList, + closedTimestamp: S.optional(S.String), + updatedTimestamp: S.optional(S.String), + }), +).annotate({ + identifier: "GetSecurityTaskResponseResourcesItem", +}) as any as S.Schema; + +export type GetSecurityTaskResponseResourcesList = + Array; +export const GetSecurityTaskResponseResourcesList = /*@__PURE__*/ S.Array( + GetSecurityTaskResponseResourcesItem, +) as any as S.Schema; + +export interface GetSecurityTaskResponse { + resources?: GetSecurityTaskResponseResourcesList; +} +export const GetSecurityTaskResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional(GetSecurityTaskResponseResourcesList), + }), +).annotate({ + identifier: "GetSecurityTaskResponse", +}) as any as S.Schema; + +export interface GetStaticAnalysisCodeVulnerabilityConnectorsRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetStaticAnalysisCodeVulnerabilityConnectorsRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ + method: "GET", + uri: "/v1/resources/static_analysis_code_vulnerability_connectors", + code: 200, + }), + ), + ).annotate({ + identifier: "GetStaticAnalysisCodeVulnerabilityConnectorsRequest", + }) as any as S.Schema; + +export interface GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesItem { + /** The path to the file where the vulnerability was found. */ + path: string; + /** The line number where the vulnerability begins. */ + beginLine: number; + /** The line number where the vulnerability ends. */ + endLine: number; + /** The column number where the vulnerability begins. */ + beginColumn: number; + /** The column number where the vulnerability ends. */ + endColumn: number; +} +export const GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + path: S.String, + beginLine: S.Number, + endLine: S.Number, + beginColumn: S.Number, + endColumn: S.Number, + }), + ).annotate({ + identifier: + "GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesItem", + }) as any as S.Schema; + +/** The path to each point in the source code where a vulnerability has been revealed through static analysis. */ +export type GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesList = + Array; +export const GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesList = + /*@__PURE__*/ S.Array( + GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesItem, + ) as any as S.Schema; + +export interface GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** The path to each point in the source code where a vulnerability has been revealed through static analysis. */ + occurrences: GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesList; + /** The severity of the vulnerability, on a scale of 0 to 10. */ + severity: number; + /** The confidence in the vulnerability, on a scale of 0-10. */ + confidence: number; + /** Whether the vulnerability can be resolved. */ + isResolvable: boolean; + /** A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`. */ + vulnerableComponentUniqueId: string; + /** A description of the vulnerability. */ + description: string; + /** Instructions for remediating the vulnerability. */ + remediationInstructions: string; + /** The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional. */ + cveId?: string; + /** The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional. */ + cvss3Vector?: string; + /** The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional. */ + cvss3Score?: number; +} +export const GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + occurrences: + GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesList, + severity: S.Number, + confidence: S.Number, + isResolvable: S.Boolean, + vulnerableComponentUniqueId: S.String, + description: S.String, + remediationInstructions: S.String, + cveId: S.optional(S.String), + cvss3Vector: S.optional(S.String), + cvss3Score: S.optional(S.Number), + }), + ).annotate({ + identifier: + "GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItem", + }) as any as S.Schema; + +export type GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesList = + Array; +export const GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesList = + /*@__PURE__*/ S.Array( + GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItem, + ) as any as S.Schema; + +export interface GetStaticAnalysisCodeVulnerabilityConnectorsResponse { + resources?: GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesList; +} +export const GetStaticAnalysisCodeVulnerabilityConnectorsResponse = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional( + GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesList, + ), + }), + ).annotate({ + identifier: "GetStaticAnalysisCodeVulnerabilityConnectorsResponse", + }) as any as S.Schema; + +export interface GetUserAccountRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetUserAccountRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ method: "GET", uri: "/v1/resources/user_account", code: 200 }), + ), +).annotate({ + identifier: "GetUserAccountRequest", +}) as any as S.Schema; + +/** What the permission level of the user is. If your system supports more advanced roles, find the closest approximation. This will be used to help populate Vanta access reviews and help customers ensure that the right set of users have access to their relevant systems. */ +export type GetUserAccountResponseResourcesItemPermissionLevel = + | "ADMIN" + | "EDITOR" + | "BASE"; +export const GetUserAccountResponseResourcesItemPermissionLevel = + /*@__PURE__*/ S.String; + +/** The status of the user. It's acceptable to omit any deactivated users from your application, but if your application has access to deactivated users, it's preferable to send them over with this status. */ +export type GetUserAccountResponseResourcesItemStatus = + | "ACTIVE" + | "DEACTIVATED"; +export const GetUserAccountResponseResourcesItemStatus = /*@__PURE__*/ S.String; + +/** The individual MFA setting. */ +export type GetUserAccountResponseResourcesItemMfaMethodsItem = + | "UNSUPPORTED" + | "DISABLED" + | "SMS" + | "EMAIL" + | "OTP" + | "HARDWARE_TOKEN" + | "PUSH_PROMPT"; +export const GetUserAccountResponseResourcesItemMfaMethodsItem = + /*@__PURE__*/ S.String; + +/** The MFA settings of the user. This helps customers verify that their users are adequately protecting their accounts. This value is ignored if authMethod is SSO. */ +export type GetUserAccountResponseResourcesItemMfaMethodsList = + Array; +export const GetUserAccountResponseResourcesItemMfaMethodsList = + /*@__PURE__*/ S.Array( + GetUserAccountResponseResourcesItemMfaMethodsItem, + ) as any as S.Schema; + +/** How the user logs into the system. This is useful for us to validate security properties, like ensuring MFA is enabled if the user logs in with a password. */ +export type GetUserAccountResponseResourcesItemAuthMethod = + | "SSO" + | "PASSWORD" + | "TOKEN" + | "BIOMETRIC"; +export const GetUserAccountResponseResourcesItemAuthMethod = + /*@__PURE__*/ S.String; + +/** If the user belongs to any groups/teams in the product, those corresponding group IDs. We'll map these to groups in our product in the future. */ +export type GetUserAccountResponseResourcesItemGroupIdsList = Array; +export const GetUserAccountResponseResourcesItemGroupIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface GetUserAccountResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** The full name of the corresponding user. If your system splits name by given name and family name, send us space separated values. */ + fullName: string; + /** In case a fullName is not relevant, like a machine account, populate this field. */ + accountName: string; + /** The email address of the user. This lets us connect accounts to Vanta users. */ + email: string; + /** What the permission level of the user is. If your system supports more advanced roles, find the closest approximation. This will be used to help populate Vanta access reviews and help customers ensure that the right set of users have access to their relevant systems. */ + permissionLevel: GetUserAccountResponseResourcesItemPermissionLevel; + /** The time at which this user was created in the system. */ + createdTimestamp: string; + /** The status of the user. It's acceptable to omit any deactivated users from your application, but if your application has access to deactivated users, it's preferable to send them over with this status. */ + status: GetUserAccountResponseResourcesItemStatus; + /** This value is ignored if `authMethod` is SSO. */ + mfaEnabled: boolean; + /** The MFA settings of the user. This helps customers verify that their users are adequately protecting their accounts. This value is ignored if authMethod is SSO. */ + mfaMethods: GetUserAccountResponseResourcesItemMfaMethodsList; + /** How the user logs into the system. This is useful for us to validate security properties, like ensuring MFA is enabled if the user logs in with a password. */ + authMethod: GetUserAccountResponseResourcesItemAuthMethod; + /** A human readable description of the user's role. */ + roleDescription?: string; + /** The last time the user was updated in the system. */ + updatedTimestamp?: string; + /** If the user is deactivated, the timestamp of that deactivation. */ + deactivatedTimestamp?: string; + /** The time at which the user last logged in. */ + lastLoginTimestamp?: string; + /** The time at which the user last reset their password. Helps with future Vanta functionality. */ + lastPasswordResetTimestamp?: string | Redacted.Redacted; + /** If the user belongs to any groups/teams in the product, those corresponding group IDs. We'll map these to groups in our product in the future. */ + groupIds?: GetUserAccountResponseResourcesItemGroupIdsList; +} +export const GetUserAccountResponseResourcesItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + fullName: S.String, + accountName: S.String, + email: S.String, + permissionLevel: GetUserAccountResponseResourcesItemPermissionLevel, + createdTimestamp: S.String, + status: GetUserAccountResponseResourcesItemStatus, + mfaEnabled: S.Boolean, + mfaMethods: GetUserAccountResponseResourcesItemMfaMethodsList, + authMethod: GetUserAccountResponseResourcesItemAuthMethod, + roleDescription: S.optional(S.String), + updatedTimestamp: S.optional(S.String), + deactivatedTimestamp: S.optional(S.String), + lastLoginTimestamp: S.optional(S.String), + lastPasswordResetTimestamp: S.optional(S.String.pipe(T.SensitiveValue({}))), + groupIds: S.optional(GetUserAccountResponseResourcesItemGroupIdsList), + }), +).annotate({ + identifier: "GetUserAccountResponseResourcesItem", +}) as any as S.Schema; + +export type GetUserAccountResponseResourcesList = + Array; +export const GetUserAccountResponseResourcesList = /*@__PURE__*/ S.Array( + GetUserAccountResponseResourcesItem, +) as any as S.Schema; + +export interface GetUserAccountResponse { + resources?: GetUserAccountResponseResourcesList; +} +export const GetUserAccountResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional(GetUserAccountResponseResourcesList), + }), +).annotate({ + identifier: "GetUserAccountResponse", +}) as any as S.Schema; + +export interface GetUserSecurityTrainingStatusRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetUserSecurityTrainingStatusRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ + method: "GET", + uri: "/v1/resources/user_security_training_status", + code: 200, + }), + ), +).annotate({ + identifier: "GetUserSecurityTrainingStatusRequest", +}) as any as S.Schema; + +/** The individual framework. */ +export type GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledItem = + | "SOC2" + | "ISO27001" + | "HIPAA" + | "PCI" + | "GDPR" + | "CCPA"; +export const GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledItem = + /*@__PURE__*/ S.String; + +/** The set of compliance or other framework requirements that can be satisfied when an employee completes this training. */ +export type GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledList = + Array; +export const GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledList = + /*@__PURE__*/ S.Array( + GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledItem, + ) as any as S.Schema; + +/** Whether the training has been fully completed. */ +export type GetUserSecurityTrainingStatusResponseResourcesItemStatus = + | "INCOMPLETE" + | "COMPLETE"; +export const GetUserSecurityTrainingStatusResponseResourcesItemStatus = + /*@__PURE__*/ S.String; + +export interface GetUserSecurityTrainingStatusResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** A stable ID of a training or a course. For example: gdpr-training-123. */ + trainingId: string; + /** The name of the training. For example: "GDPR Training". */ + trainingName: string; + /** The set of compliance or other framework requirements that can be satisfied when an employee completes this training. */ + frameworksFulfilled: GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledList; + /** The name of the user completing the training. */ + traineeFullName: string; + /** The account name of the user completing the training. This field is mostly useful if the trainee doesn't have a name associated, but has an associated account with a username. */ + traineeAccountName: string; + /** The email address of the user completing the training. */ + traineeEmail: string; + /** Whether the training has been fully completed. */ + status: GetUserSecurityTrainingStatusResponseResourcesItemStatus; + /** The time at which this training course was created. This field is useful as identifying metadata. */ + trainingCreatedTimestamp: string; + /** The time at which this training course is due for the user. Vanta will check whether employees complete their training on time. */ + trainingDueTimestamp: string; + /** The time at which this training course was completed by the user. */ + trainingCompletedTimestamp?: string; +} +export const GetUserSecurityTrainingStatusResponseResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + trainingId: S.String, + trainingName: S.String, + frameworksFulfilled: + GetUserSecurityTrainingStatusResponseResourcesItemFrameworksFulfilledList, + traineeFullName: S.String, + traineeAccountName: S.String, + traineeEmail: S.String, + status: GetUserSecurityTrainingStatusResponseResourcesItemStatus, + trainingCreatedTimestamp: S.String, + trainingDueTimestamp: S.String, + trainingCompletedTimestamp: S.optional(S.String), + }), + ).annotate({ + identifier: "GetUserSecurityTrainingStatusResponseResourcesItem", + }) as any as S.Schema; + +export type GetUserSecurityTrainingStatusResponseResourcesList = + Array; +export const GetUserSecurityTrainingStatusResponseResourcesList = + /*@__PURE__*/ S.Array( + GetUserSecurityTrainingStatusResponseResourcesItem, + ) as any as S.Schema; + +export interface GetUserSecurityTrainingStatusResponse { + resources?: GetUserSecurityTrainingStatusResponseResourcesList; +} +export const GetUserSecurityTrainingStatusResponse = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + resources: S.optional(GetUserSecurityTrainingStatusResponseResourcesList), + }), +).annotate({ + identifier: "GetUserSecurityTrainingStatusResponse", +}) as any as S.Schema; + +export interface GetVulnerableComponentRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetVulnerableComponentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ + method: "GET", + uri: "/v1/resources/vulnerable_component", + code: 200, + }), + ), +).annotate({ + identifier: "GetVulnerableComponentRequest", +}) as any as S.Schema; + +/** The type of the system component in which a vulnerability has been detected (eg: container, source code repository). */ +export type GetVulnerableComponentResponseResourcesItemTargetType = + | "HOST" + | "SERVER" + | "CONTAINER" + | "CONTAINER_REPOSITORY" + | "CONTAINER_REPOSITORY_IMAGE" + | "CODE_REPOSITORY" + | "SERVERLESS_FUNCTION" + | "MANIFEST_FILE" + | "WORKSTATION" + | "OTHER"; +export const GetVulnerableComponentResponseResourcesItemTargetType = + /*@__PURE__*/ S.String; + +export interface GetVulnerableComponentResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** A timestamp that indicates when the data being sent was collected from the vulnerable component. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field. */ + collectedTimestamp: string; + /** The name of the system component in which a vulnerability has been detected. */ + name: string; + /** Description of the system component in which a vulnerability has been detected. */ + description: string; + /** The type of the system component in which a vulnerability has been detected (eg: container, source code repository). */ + targetType: GetVulnerableComponentResponseResourcesItemTargetType; +} +export const GetVulnerableComponentResponseResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + collectedTimestamp: S.String, + name: S.String, + description: S.String, + targetType: GetVulnerableComponentResponseResourcesItemTargetType, + }), + ).annotate({ + identifier: "GetVulnerableComponentResponseResourcesItem", + }) as any as S.Schema; + +export type GetVulnerableComponentResponseResourcesList = + Array; +export const GetVulnerableComponentResponseResourcesList = + /*@__PURE__*/ S.Array( + GetVulnerableComponentResponseResourcesItem, + ) as any as S.Schema; + +export interface GetVulnerableComponentResponse { + resources?: GetVulnerableComponentResponseResourcesList; +} +export const GetVulnerableComponentResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional(GetVulnerableComponentResponseResourcesList), + }), +).annotate({ + identifier: "GetVulnerableComponentResponse", +}) as any as S.Schema; + +export interface GetWindowsUserComputerRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; +} +export const GetWindowsUserComputerRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String.pipe(T.Query()), + }).pipe( + T.Http({ + method: "GET", + uri: "/v1/resources/windows_user_computer", + code: 200, + }), + ), +).annotate({ + identifier: "GetWindowsUserComputerRequest", +}) as any as S.Schema; + +export interface GetWindowsUserComputerResponseResourcesItemProgramsItem { + /** The name of the application. */ + name: string; + /** The last time the application was opened. */ + lastOpenedTimestamp?: string; +} +export const GetWindowsUserComputerResponseResourcesItemProgramsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + lastOpenedTimestamp: S.optional(S.String), + }), + ).annotate({ + identifier: "GetWindowsUserComputerResponseResourcesItemProgramsItem", + }) as any as S.Schema; + +/** All the installed programs on the Windows system. */ +export type GetWindowsUserComputerResponseResourcesItemProgramsList = + Array; +export const GetWindowsUserComputerResponseResourcesItemProgramsList = + /*@__PURE__*/ S.Array( + GetWindowsUserComputerResponseResourcesItemProgramsItem, + ) as any as S.Schema; + +/** The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum. */ +export type GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItemBrowser = + | "CHROME" + | "FIREFOX" + | "OPERA" + | "SAFARI" + | "EDGE"; +export const GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItemBrowser = + /*@__PURE__*/ S.String; + +export interface GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItem { + /** The identifier of the browser extension. */ + extensionId: string; + /** The name of the browser extension. */ + name: string; + /** The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum. */ + browser: GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItemBrowser; +} +export const GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + extensionId: S.String, + name: S.String, + browser: + GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItemBrowser, + }), + ).annotate({ + identifier: + "GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItem", + }) as any as S.Schema; + +/** A list of browser extensions on this device. Used to match against known password managers to demonstrate use. */ +export type GetWindowsUserComputerResponseResourcesItemBrowserExtensionsList = + Array; +export const GetWindowsUserComputerResponseResourcesItemBrowserExtensionsList = + /*@__PURE__*/ S.Array( + GetWindowsUserComputerResponseResourcesItemBrowserExtensionsItem, + ) as any as S.Schema; + +export interface GetWindowsUserComputerResponseResourcesItemDrivesItem { + /** The name of the drive. */ + name: string; + /** Does the drive have some sort of encryption on it. */ + encrypted: boolean; + /** Metadata about the boot volume helps Vanta skip checking volumes that aren't relevant, like USB Drives. */ + isBootVolume?: boolean; +} +export const GetWindowsUserComputerResponseResourcesItemDrivesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + encrypted: S.Boolean, + isBootVolume: S.optional(S.Boolean), + }), + ).annotate({ + identifier: "GetWindowsUserComputerResponseResourcesItemDrivesItem", + }) as any as S.Schema; + +/** A list of drives on this device. Used to verify encryption status. */ +export type GetWindowsUserComputerResponseResourcesItemDrivesList = + Array; +export const GetWindowsUserComputerResponseResourcesItemDrivesList = + /*@__PURE__*/ S.Array( + GetWindowsUserComputerResponseResourcesItemDrivesItem, + ) as any as S.Schema; + +export type GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +/** If the source system cannot easily retrieve screenlock policies, it's OK to skip this data. */ +export type GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList = + Array; +export const GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + ) as any as S.Schema; + +export type GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockSettings = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockSettings = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +export interface GetWindowsUserComputerResponseResourcesItemUsersItem { + /** The user's username. Does not have to be unique. */ + username: string; + /** If the source system cannot easily retrieve screenlock policies, it's OK to skip this data. */ + screenlockPolicies: GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList; + screenlockSettings: GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + /** The last time the user logged in to the device, if available. */ + lastLoginTimestamp?: string; +} +export const GetWindowsUserComputerResponseResourcesItemUsersItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + username: S.String, + screenlockPolicies: + GetWindowsUserComputerResponseResourcesItemUsersItemScreenlockPoliciesList, + screenlockSettings: + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + lastLoginTimestamp: S.optional(S.String), + }), + ).annotate({ + identifier: "GetWindowsUserComputerResponseResourcesItemUsersItem", + }) as any as S.Schema; + +/** The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely. */ +export type GetWindowsUserComputerResponseResourcesItemUsersList = + Array; +export const GetWindowsUserComputerResponseResourcesItemUsersList = + /*@__PURE__*/ S.Array( + GetWindowsUserComputerResponseResourcesItemUsersItem, + ) as any as S.Schema; + +export type GetWindowsUserComputerResponseResourcesItemSystemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const GetWindowsUserComputerResponseResourcesItemSystemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +/** System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests. */ +export type GetWindowsUserComputerResponseResourcesItemSystemScreenlockPoliciesList = + Array; +export const GetWindowsUserComputerResponseResourcesItemSystemScreenlockPoliciesList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + ) as any as S.Schema; + +export type GetWindowsUserComputerResponseResourcesItemPasswordPolicy = + GetMacosUserComputerResponseResourcesItemPasswordPolicy; +export const GetWindowsUserComputerResponseResourcesItemPasswordPolicy = + GetMacosUserComputerResponseResourcesItemPasswordPolicy; + +/** The category of the security product. */ +export type GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemCategory = + | "FIREWALL" + | "ANTIVIRUS" + | "ANTISPYWARE"; +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemCategory = + /*@__PURE__*/ S.String; + +/** The state of the security product. */ +export type GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemState = + | "ON" + | "OFF" + | "UNKNOWN"; +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemState = + /*@__PURE__*/ S.String; + +export interface GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItem { + /** The name of the security product. */ + name: string; + /** The category of the security product. */ + category: GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemCategory; + /** The state of the security product. */ + state: GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemState; + /** When this data was collected. */ + stateTimestamp: string; + /** Whether the security signatures are up to date. */ + signaturesUpToDate: boolean; +} +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + category: + GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemCategory, + state: + GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItemState, + stateTimestamp: S.String, + signaturesUpToDate: S.Boolean, + }), + ).annotate({ + identifier: + "GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItem", + }) as any as S.Schema; + +/** A list of services that are monitored by Windows Security Center (WSC). */ +export type GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsList = + Array; +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsList = + /*@__PURE__*/ S.Array( + GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsItem, + ) as any as S.Schema; + +/** The health of the monitored Firewall. */ +export type GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterFirewall = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterFirewall = + /*@__PURE__*/ S.String; + +/** The health of the Windows Autoupdate feature. */ +export type GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAutoupdate = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAutoupdate = + /*@__PURE__*/ S.String; + +/** The health of the monitored Antivirus solution. */ +export type GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAntivirus = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAntivirus = + /*@__PURE__*/ S.String; + +/** The health of the Internet Settings. */ +export type GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterInternetSetting = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterInternetSetting = + /*@__PURE__*/ S.String; + +/** The health of the User Account Control (UAC) capability in Windows. */ +export type GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterUserAccountControl = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterUserAccountControl = + /*@__PURE__*/ S.String; + +/** The health of the Windows Security Center Service. */ +export type GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterWindowsSecurityCenterService = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterWindowsSecurityCenterService = + /*@__PURE__*/ S.String; + +export interface GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenter { + /** The health of the monitored Firewall. */ + firewall: GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterFirewall; + /** The health of the Windows Autoupdate feature. */ + autoupdate: GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAutoupdate; + /** The health of the monitored Antivirus solution. */ + antivirus: GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAntivirus; + /** The health of the Internet Settings. */ + internetSetting: GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterInternetSetting; + /** The health of the User Account Control (UAC) capability in Windows. */ + userAccountControl: GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterUserAccountControl; + /** The health of the Windows Security Center Service. */ + windowsSecurityCenterService: GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterWindowsSecurityCenterService; +} +export const GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenter = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + firewall: + GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterFirewall, + autoupdate: + GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAutoupdate, + antivirus: + GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterAntivirus, + internetSetting: + GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterInternetSetting, + userAccountControl: + GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterUserAccountControl, + windowsSecurityCenterService: + GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenterWindowsSecurityCenterService, + }), + ).annotate({ + identifier: + "GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenter", + }) as any as S.Schema; + +export interface GetWindowsUserComputerResponseResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** A timestamp that indicates when the data being sent was collected from the host computer. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field. */ + collectedTimestamp: string; + /** The OS name. Example: `Windows 11`. */ + osName: string; + /** The OS version. Example: `Version 10.0.22621`. */ + osVersion: string; + /** The hardware UUID/UDID of the device. */ + hardwareUuid: string; + /** The hardware serial number of the device. */ + serialNumber: string; + /** All the installed programs on the Windows system. */ + programs: GetWindowsUserComputerResponseResourcesItemProgramsList; + /** A list of browser extensions on this device. Used to match against known password managers to demonstrate use. */ + browserExtensions: GetWindowsUserComputerResponseResourcesItemBrowserExtensionsList; + /** A list of drives on this device. Used to verify encryption status. */ + drives: GetWindowsUserComputerResponseResourcesItemDrivesList; + /** The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely. */ + users: GetWindowsUserComputerResponseResourcesItemUsersList; + /** System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests. */ + systemScreenlockPolicies: GetWindowsUserComputerResponseResourcesItemSystemScreenlockPoliciesList; + /** Is the system managed by a Mobile Device Management system. */ + isManaged: boolean; + /** Does the system have auto-updates enabled. */ + autoUpdatesEnabled: boolean; + /** The email address of the owner of the system, if it's known. */ + owner?: string; + passwordPolicy?: GetMacosUserComputerResponseResourcesItemPasswordPolicy; + /** A timestamp that indicates when the host computer was last enrolled within your system. If the computer has been un-enrolled and then re-enrolled, send data for the most recent enrollment. */ + lastEnrolledTimestamp?: string; + /** A list of services that are monitored by Windows Security Center (WSC). */ + windowsSecurityProducts?: GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsList; + windowsSecurityCenter?: GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenter; +} +export const GetWindowsUserComputerResponseResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + collectedTimestamp: S.String, + osName: S.String, + osVersion: S.String, + hardwareUuid: S.String, + serialNumber: S.String, + programs: GetWindowsUserComputerResponseResourcesItemProgramsList, + browserExtensions: + GetWindowsUserComputerResponseResourcesItemBrowserExtensionsList, + drives: GetWindowsUserComputerResponseResourcesItemDrivesList, + users: GetWindowsUserComputerResponseResourcesItemUsersList, + systemScreenlockPolicies: + GetWindowsUserComputerResponseResourcesItemSystemScreenlockPoliciesList, + isManaged: S.Boolean, + autoUpdatesEnabled: S.Boolean, + owner: S.optional(S.String), + passwordPolicy: S.optional( + GetMacosUserComputerResponseResourcesItemPasswordPolicy, + ), + lastEnrolledTimestamp: S.optional(S.String), + windowsSecurityProducts: S.optional( + GetWindowsUserComputerResponseResourcesItemWindowsSecurityProductsList, + ), + windowsSecurityCenter: S.optional( + GetWindowsUserComputerResponseResourcesItemWindowsSecurityCenter, + ), + }), + ).annotate({ + identifier: "GetWindowsUserComputerResponseResourcesItem", + }) as any as S.Schema; + +export type GetWindowsUserComputerResponseResourcesList = + Array; +export const GetWindowsUserComputerResponseResourcesList = + /*@__PURE__*/ S.Array( + GetWindowsUserComputerResponseResourcesItem, + ) as any as S.Schema; + +export interface GetWindowsUserComputerResponse { + resources?: GetWindowsUserComputerResponseResourcesList; +} +export const GetWindowsUserComputerResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resources: S.optional(GetWindowsUserComputerResponseResourcesList), + }), +).annotate({ + identifier: "GetWindowsUserComputerResponse", +}) as any as S.Schema; + +export type PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemQueryParamsItem = + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsItem; +export const PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemQueryParamsItem = + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsItem; + +/** The API params associated with this vulnerability. */ +export type PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemQueryParamsList = + Array; +export const PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemQueryParamsList = + /*@__PURE__*/ S.Array( + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemQueryParamsItem, + ) as any as S.Schema; + +export type PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemHeadersItem = + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersItem; +export const PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemHeadersItem = + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersItem; + +/** The API headers associated with this vulnerability. */ +export type PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemHeadersList = + Array; +export const PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemHeadersList = + /*@__PURE__*/ S.Array( + GetApiEndpointVulnerabilityConnectorsResponseResourcesItemOccurrencesItemHeadersItem, + ) as any as S.Schema; + +export interface PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItem { + /** Markdown description of this API endpoint vulnerability occurrence. */ + description: string; + /** The API endpoint URL associated with this vulnerability occurrence. */ + fromUrl?: string; + /** The API params associated with this vulnerability. */ + queryParams?: PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemQueryParamsList; + /** The API headers associated with this vulnerability. */ + headers?: PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemHeadersList; + /** The body of the request passed to the API, with sensitive information redacted. */ + body?: string; +} +export const PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + description: S.String, + fromUrl: S.optional(S.String), + queryParams: S.optional( + PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemQueryParamsList, + ), + headers: S.optional( + PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItemHeadersList, + ), + body: S.optional(S.String), + }), + ).annotate({ + identifier: + "PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItem", + }) as any as S.Schema; + +/** A list of occurrences of vulnerable API endpoints. */ +export type PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesList = + Array; +export const PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesList = + /*@__PURE__*/ S.Array( + PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesItem, + ) as any as S.Schema; + +export interface PutApiEndpointVulnerabilityConnectorsRequestResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** A list of occurrences of vulnerable API endpoints. */ + occurrences: PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesList; + /** The severity of the vulnerability, on a scale of 0 to 10. This will be rounded to the nearest tenth. */ + severity: number; + /** A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`. */ + vulnerableComponentUniqueId: string; + /** A description of the vulnerability. */ + description: string; + /** Instructions for remediating the vulnerability. */ + remediationInstructions: string; + /** The vulnerable URL. */ + url: string; + /** The HTTP method (eg: GET, POST) associated with this vulnerability. */ + httpMethod: string; + /** The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional. */ + cveId?: string; + /** The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional. */ + cvss3Vector?: string; + /** The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional. */ + cvss3Score?: number; +} +export const PutApiEndpointVulnerabilityConnectorsRequestResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + occurrences: + PutApiEndpointVulnerabilityConnectorsRequestResourcesItemOccurrencesList, + severity: S.Number, + vulnerableComponentUniqueId: S.String, + description: S.String, + remediationInstructions: S.String, + url: S.String, + httpMethod: S.String, + cveId: S.optional(S.String), + cvss3Vector: S.optional(S.String), + cvss3Score: S.optional(S.Number), + }), + ).annotate({ + identifier: "PutApiEndpointVulnerabilityConnectorsRequestResourcesItem", + }) as any as S.Schema; + +export type PutApiEndpointVulnerabilityConnectorsRequestResourcesList = + Array; +export const PutApiEndpointVulnerabilityConnectorsRequestResourcesList = + /*@__PURE__*/ S.Array( + PutApiEndpointVulnerabilityConnectorsRequestResourcesItem, + ) as any as S.Schema; + +export interface PutApiEndpointVulnerabilityConnectorsRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutApiEndpointVulnerabilityConnectorsRequestResourcesList; +} +export const PutApiEndpointVulnerabilityConnectorsRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + resources: PutApiEndpointVulnerabilityConnectorsRequestResourcesList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/v1/resources/api_endpoint_vulnerability_connectors", + code: 200, + }), + ), + ).annotate({ + identifier: "PutApiEndpointVulnerabilityConnectorsRequest", + }) as any as S.Schema; + +export interface PutApiEndpointVulnerabilityConnectorsResponse { + success: boolean; +} +export const PutApiEndpointVulnerabilityConnectorsResponse = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), + ).annotate({ + identifier: "PutApiEndpointVulnerabilityConnectorsResponse", + }) as any as S.Schema; + +/** The current status of the background check. */ +export type PutBackgroundCheckConnectorRequestResourcesItemStatus = + | "INCOMPLETE" + | "IN_PROGRESS" + | "COMPLETE"; +export const PutBackgroundCheckConnectorRequestResourcesItemStatus = + /*@__PURE__*/ S.String; + +export interface PutBackgroundCheckConnectorRequestResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** The full name of the employee or contractor undergoing the background check. */ + fullName: string; + /** The email address of the employee or contractor undergoing the background check. */ + email: string; + /** The current status of the background check. */ + status: PutBackgroundCheckConnectorRequestResourcesItemStatus | (string & {}); + /** If complete, the date of completion of the background check. */ + completionDate?: string; +} +export const PutBackgroundCheckConnectorRequestResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + fullName: S.String, + email: S.String, + status: PutBackgroundCheckConnectorRequestResourcesItemStatus, + completionDate: S.optional(S.String), + }), + ).annotate({ + identifier: "PutBackgroundCheckConnectorRequestResourcesItem", + }) as any as S.Schema; + +export type PutBackgroundCheckConnectorRequestResourcesList = + Array; +export const PutBackgroundCheckConnectorRequestResourcesList = + /*@__PURE__*/ S.Array( + PutBackgroundCheckConnectorRequestResourcesItem, + ) as any as S.Schema; + +export interface PutBackgroundCheckConnectorRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutBackgroundCheckConnectorRequestResourcesList; +} +export const PutBackgroundCheckConnectorRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + resources: PutBackgroundCheckConnectorRequestResourcesList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/v1/resources/background_check_connector", + code: 200, + }), + ), +).annotate({ + identifier: "PutBackgroundCheckConnectorRequest", +}) as any as S.Schema; + +export interface PutBackgroundCheckConnectorResponse { + success: boolean; +} +export const PutBackgroundCheckConnectorResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), +).annotate({ + identifier: "PutBackgroundCheckConnectorResponse", +}) as any as S.Schema; + +export type PutCustomResourceRequestResourcesItem = + GetCustomResourceResponseResourcesItem; +export const PutCustomResourceRequestResourcesItem = + GetCustomResourceResponseResourcesItem; + +export type PutCustomResourceRequestResourcesList = + Array; +export const PutCustomResourceRequestResourcesList = /*@__PURE__*/ S.Array( + GetCustomResourceResponseResourcesItem, +) as any as S.Schema; + +export interface PutCustomResourceRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutCustomResourceRequestResourcesList; +} +export const PutCustomResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + resources: PutCustomResourceRequestResourcesList, + }).pipe( + T.Http({ method: "PUT", uri: "/v1/resources/custom_resource", code: 200 }), + ), +).annotate({ + identifier: "PutCustomResourceRequest", +}) as any as S.Schema; + +export interface PutCustomResourceResponse { + success: boolean; +} +export const PutCustomResourceResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), +).annotate({ + identifier: "PutCustomResourceResponse", +}) as any as S.Schema; + +export type PutMacosUserComputerRequestResourcesItemApplicationsItem = + GetMacosUserComputerResponseResourcesItemApplicationsItem; +export const PutMacosUserComputerRequestResourcesItemApplicationsItem = + GetMacosUserComputerResponseResourcesItemApplicationsItem; + +/** All the installed Mac Apps on the system. */ +export type PutMacosUserComputerRequestResourcesItemApplicationsList = + Array; +export const PutMacosUserComputerRequestResourcesItemApplicationsList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemApplicationsItem, + ) as any as S.Schema; + +/** The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum. */ +export type PutMacosUserComputerRequestResourcesItemBrowserExtensionsItemBrowser = + | "CHROME" + | "FIREFOX" + | "OPERA" + | "SAFARI" + | "EDGE"; +export const PutMacosUserComputerRequestResourcesItemBrowserExtensionsItemBrowser = + /*@__PURE__*/ S.String; + +export interface PutMacosUserComputerRequestResourcesItemBrowserExtensionsItem { + /** The identifier of the browser extension. */ + extensionId: string; + /** The name of the browser extension. */ + name: string; + /** The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum. */ + browser: + | PutMacosUserComputerRequestResourcesItemBrowserExtensionsItemBrowser + | (string & {}); +} +export const PutMacosUserComputerRequestResourcesItemBrowserExtensionsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + extensionId: S.String, + name: S.String, + browser: + PutMacosUserComputerRequestResourcesItemBrowserExtensionsItemBrowser, + }), + ).annotate({ + identifier: "PutMacosUserComputerRequestResourcesItemBrowserExtensionsItem", + }) as any as S.Schema; + +/** A list of browser extensions on this device. Used to match against known password managers to demonstrate use. */ +export type PutMacosUserComputerRequestResourcesItemBrowserExtensionsList = + Array; +export const PutMacosUserComputerRequestResourcesItemBrowserExtensionsList = + /*@__PURE__*/ S.Array( + PutMacosUserComputerRequestResourcesItemBrowserExtensionsItem, + ) as any as S.Schema; + +export type PutMacosUserComputerRequestResourcesItemDrivesItem = + GetMacosUserComputerResponseResourcesItemDrivesItem; +export const PutMacosUserComputerRequestResourcesItemDrivesItem = + GetMacosUserComputerResponseResourcesItemDrivesItem; + +/** A list of drives on this device. Used to verify encryption status. */ +export type PutMacosUserComputerRequestResourcesItemDrivesList = + Array; +export const PutMacosUserComputerRequestResourcesItemDrivesList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemDrivesItem, + ) as any as S.Schema; + +export type PutMacosUserComputerRequestResourcesItemUsersItemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const PutMacosUserComputerRequestResourcesItemUsersItemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +/** If the source system cannot easily retrieve screenlock policies, it's OK to skip this data. */ +export type PutMacosUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList = + Array; +export const PutMacosUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + ) as any as S.Schema; + +export type PutMacosUserComputerRequestResourcesItemUsersItemScreenlockSettings = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const PutMacosUserComputerRequestResourcesItemUsersItemScreenlockSettings = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +export interface PutMacosUserComputerRequestResourcesItemUsersItem { + /** The user's username. Does not have to be unique. */ + username: string; + /** If the source system cannot easily retrieve screenlock policies, it's OK to skip this data. */ + screenlockPolicies: PutMacosUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList; + screenlockSettings: GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + /** The last time the user logged in to the device, if available. */ + lastLoginTimestamp?: string; +} +export const PutMacosUserComputerRequestResourcesItemUsersItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + username: S.String, + screenlockPolicies: + PutMacosUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList, + screenlockSettings: + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + lastLoginTimestamp: S.optional(S.String), + }), + ).annotate({ + identifier: "PutMacosUserComputerRequestResourcesItemUsersItem", + }) as any as S.Schema; + +/** The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely. */ +export type PutMacosUserComputerRequestResourcesItemUsersList = + Array; +export const PutMacosUserComputerRequestResourcesItemUsersList = + /*@__PURE__*/ S.Array( + PutMacosUserComputerRequestResourcesItemUsersItem, + ) as any as S.Schema; + +export type PutMacosUserComputerRequestResourcesItemSystemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const PutMacosUserComputerRequestResourcesItemSystemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +/** System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests. */ +export type PutMacosUserComputerRequestResourcesItemSystemScreenlockPoliciesList = + Array; +export const PutMacosUserComputerRequestResourcesItemSystemScreenlockPoliciesList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + ) as any as S.Schema; + +export type PutMacosUserComputerRequestResourcesItemPasswordPolicy = + GetMacosUserComputerResponseResourcesItemPasswordPolicy; +export const PutMacosUserComputerRequestResourcesItemPasswordPolicy = + GetMacosUserComputerResponseResourcesItemPasswordPolicy; + +export interface PutMacosUserComputerRequestResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** A timestamp that indicates when the data being sent was collected from the host computer. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field. */ + collectedTimestamp: string; + /** The OS name. Example: `MacOS Monterey`. */ + osName: string; + /** The OS version. Example: `Version 12.4`. */ + osVersion: string; + /** The hardware UUID/UDID of the device. */ + hardwareUuid: string; + /** The hardware serial number of the device. */ + serialNumber: string; + /** All the installed Mac Apps on the system. */ + applications: PutMacosUserComputerRequestResourcesItemApplicationsList; + /** A list of browser extensions on this device. Used to match against known password managers to demonstrate use. */ + browserExtensions: PutMacosUserComputerRequestResourcesItemBrowserExtensionsList; + /** A list of drives on this device. Used to verify encryption status. */ + drives: PutMacosUserComputerRequestResourcesItemDrivesList; + /** The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely. */ + users: PutMacosUserComputerRequestResourcesItemUsersList; + /** System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests. */ + systemScreenlockPolicies: PutMacosUserComputerRequestResourcesItemSystemScreenlockPoliciesList; + /** Is the system managed by a Mobile Device Management system. */ + isManaged: boolean; + /** Does the system have auto-updates enabled. */ + autoUpdatesEnabled: boolean; + /** The email address of the owner of the system, if it's known. */ + owner?: string; + passwordPolicy?: GetMacosUserComputerResponseResourcesItemPasswordPolicy; + /** A timestamp that indicates when the host computer was last enrolled within your system. If the computer has been un-enrolled and then re-enrolled, send data for the most recent enrollment. */ + lastEnrolledTimestamp?: string; + /** Is XProtect enabled on the system. */ + isXProtectEnabled?: boolean; +} +export const PutMacosUserComputerRequestResourcesItem = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + collectedTimestamp: S.String, + osName: S.String, + osVersion: S.String, + hardwareUuid: S.String, + serialNumber: S.String, + applications: PutMacosUserComputerRequestResourcesItemApplicationsList, + browserExtensions: + PutMacosUserComputerRequestResourcesItemBrowserExtensionsList, + drives: PutMacosUserComputerRequestResourcesItemDrivesList, + users: PutMacosUserComputerRequestResourcesItemUsersList, + systemScreenlockPolicies: + PutMacosUserComputerRequestResourcesItemSystemScreenlockPoliciesList, + isManaged: S.Boolean, + autoUpdatesEnabled: S.Boolean, + owner: S.optional(S.String), + passwordPolicy: S.optional( + GetMacosUserComputerResponseResourcesItemPasswordPolicy, + ), + lastEnrolledTimestamp: S.optional(S.String), + isXProtectEnabled: S.optional(S.Boolean), + }), +).annotate({ + identifier: "PutMacosUserComputerRequestResourcesItem", +}) as any as S.Schema; + +export type PutMacosUserComputerRequestResourcesList = + Array; +export const PutMacosUserComputerRequestResourcesList = /*@__PURE__*/ S.Array( + PutMacosUserComputerRequestResourcesItem, +) as any as S.Schema; + +export interface PutMacosUserComputerRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutMacosUserComputerRequestResourcesList; +} +export const PutMacosUserComputerRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + resources: PutMacosUserComputerRequestResourcesList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/v1/resources/macos_user_computer", + code: 200, + }), + ), +).annotate({ + identifier: "PutMacosUserComputerRequest", +}) as any as S.Schema; + +export interface PutMacosUserComputerResponse { + success: boolean; +} +export const PutMacosUserComputerResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), +).annotate({ + identifier: "PutMacosUserComputerResponse", +}) as any as S.Schema; + +export type PutPackageVulnerabilityConnectorsRequestResourcesItem = + GetPackageVulnerabilityConnectorsResponseResourcesItem; +export const PutPackageVulnerabilityConnectorsRequestResourcesItem = + GetPackageVulnerabilityConnectorsResponseResourcesItem; + +export type PutPackageVulnerabilityConnectorsRequestResourcesList = + Array; +export const PutPackageVulnerabilityConnectorsRequestResourcesList = + /*@__PURE__*/ S.Array( + GetPackageVulnerabilityConnectorsResponseResourcesItem, + ) as any as S.Schema; + +export interface PutPackageVulnerabilityConnectorsRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutPackageVulnerabilityConnectorsRequestResourcesList; +} +export const PutPackageVulnerabilityConnectorsRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + resourceId: S.String, + resources: PutPackageVulnerabilityConnectorsRequestResourcesList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/v1/resources/package_vulnerability_connectors", + code: 200, + }), + ), +).annotate({ + identifier: "PutPackageVulnerabilityConnectorsRequest", +}) as any as S.Schema; + +export interface PutPackageVulnerabilityConnectorsResponse { + success: boolean; +} +export const PutPackageVulnerabilityConnectorsResponse = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), + ).annotate({ + identifier: "PutPackageVulnerabilityConnectorsResponse", + }) as any as S.Schema; + +export type PutSecretRequestResourcesItem = GetSecretResponseResourcesItem; +export const PutSecretRequestResourcesItem = GetSecretResponseResourcesItem; + +export type PutSecretRequestResourcesList = + Array; +export const PutSecretRequestResourcesList = /*@__PURE__*/ S.Array( + GetSecretResponseResourcesItem, +) as any as S.Schema; + +export interface PutSecretRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutSecretRequestResourcesList; +} +export const PutSecretRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + resources: PutSecretRequestResourcesList, + }).pipe(T.Http({ method: "PUT", uri: "/v1/resources/secret", code: 200 })), +).annotate({ + identifier: "PutSecretRequest", +}) as any as S.Schema; + +export interface PutSecretResponse { + success: boolean; +} +export const PutSecretResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), +).annotate({ + identifier: "PutSecretResponse", +}) as any as S.Schema; + +/** The status of the task. If your application supports additional states, use the closest approximation. */ +export type PutSecurityTaskRequestResourcesItemTaskState = + | "OPEN" + | "IN_PROGRESS" + | "CLOSED"; +export const PutSecurityTaskRequestResourcesItemTaskState = + /*@__PURE__*/ S.String; + +/** Priorities are mapped against SLAs for tasks. If your task system does not have fixed priorities, consider letting users configure priorities through labels. */ +export type PutSecurityTaskRequestResourcesItemPriority = + | "P0" + | "P1" + | "P2" + | "P3" + | "P4"; +export const PutSecurityTaskRequestResourcesItemPriority = + /*@__PURE__*/ S.String; + +/** The set of users assigned to the tasks. Emails do not necessarily need to be Vanta users. */ +export type PutSecurityTaskRequestResourcesItemAssigneesList = Array; +export const PutSecurityTaskRequestResourcesItemAssigneesList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** The set of task tags or labels. */ +export type PutSecurityTaskRequestResourcesItemLabelsList = Array; +export const PutSecurityTaskRequestResourcesItemLabelsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface PutSecurityTaskRequestResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** The task ID, as present in the source application. This will be shown in Vanta to help customers match tasks if necessary. */ + taskId: string; + /** The title of the task, as present in the source application. This will be shown in Vanta to help customers match tasks if necessary. */ + taskTitle: string; + /** When the task was created. */ + createdTimestamp: string; + /** The status of the task. If your application supports additional states, use the closest approximation. */ + taskState: PutSecurityTaskRequestResourcesItemTaskState | (string & {}); + /** Priorities are mapped against SLAs for tasks. If your task system does not have fixed priorities, consider letting users configure priorities through labels. */ + priority: PutSecurityTaskRequestResourcesItemPriority | (string & {}); + /** The set of users assigned to the tasks. Emails do not necessarily need to be Vanta users. */ + assignees: PutSecurityTaskRequestResourcesItemAssigneesList; + /** The creator of the task. */ + creator: string; + /** The set of task tags or labels. */ + labels: PutSecurityTaskRequestResourcesItemLabelsList; + /** When the task was closed, if the task was closed. Required if `taskState` is `CLOSED`, otherwise must be absent. */ + closedTimestamp?: string; + /** When the task was last updated. */ + updatedTimestamp?: string; +} +export const PutSecurityTaskRequestResourcesItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + taskId: S.String, + taskTitle: S.String, + createdTimestamp: S.String, + taskState: PutSecurityTaskRequestResourcesItemTaskState, + priority: PutSecurityTaskRequestResourcesItemPriority, + assignees: PutSecurityTaskRequestResourcesItemAssigneesList, + creator: S.String, + labels: PutSecurityTaskRequestResourcesItemLabelsList, + closedTimestamp: S.optional(S.String), + updatedTimestamp: S.optional(S.String), + }), +).annotate({ + identifier: "PutSecurityTaskRequestResourcesItem", +}) as any as S.Schema; + +export type PutSecurityTaskRequestResourcesList = + Array; +export const PutSecurityTaskRequestResourcesList = /*@__PURE__*/ S.Array( + PutSecurityTaskRequestResourcesItem, +) as any as S.Schema; + +export interface PutSecurityTaskRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutSecurityTaskRequestResourcesList; +} +export const PutSecurityTaskRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + resources: PutSecurityTaskRequestResourcesList, + }).pipe( + T.Http({ method: "PUT", uri: "/v1/resources/security_task", code: 200 }), + ), +).annotate({ + identifier: "PutSecurityTaskRequest", +}) as any as S.Schema; + +export interface PutSecurityTaskResponse { + success: boolean; +} +export const PutSecurityTaskResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), +).annotate({ + identifier: "PutSecurityTaskResponse", +}) as any as S.Schema; + +export type PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItemOccurrencesItem = + GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesItem; +export const PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItemOccurrencesItem = + GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesItem; + +/** The path to each point in the source code where a vulnerability has been revealed through static analysis. */ +export type PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItemOccurrencesList = + Array; +export const PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItemOccurrencesList = + /*@__PURE__*/ S.Array( + GetStaticAnalysisCodeVulnerabilityConnectorsResponseResourcesItemOccurrencesItem, + ) as any as S.Schema; + +export interface PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** The path to each point in the source code where a vulnerability has been revealed through static analysis. */ + occurrences: PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItemOccurrencesList; + /** The severity of the vulnerability, on a scale of 0 to 10. */ + severity: number; + /** The confidence in the vulnerability, on a scale of 0-10. */ + confidence: number; + /** Whether the vulnerability can be resolved. */ + isResolvable: boolean; + /** A unique identifier for the vulnerable component associated with the vulnerability. This must reference the `uniqueId` field in the a previously supplied `VulnerableComponent`. */ + vulnerableComponentUniqueId: string; + /** A description of the vulnerability. */ + description: string; + /** Instructions for remediating the vulnerability. */ + remediationInstructions: string; + /** The Common Vulnerabilities and Exposures (CVE) identifier for the vulnerability. This field is optional. */ + cveId?: string; + /** The Common Vulnerability Scoring System (CVSS) version 3 vector for the vulnerability. This field is optional. */ + cvss3Vector?: string; + /** The Common Vulnerability Scoring System (CVSS) version 3 score for the vulnerability. This field is optional. */ + cvss3Score?: number; +} +export const PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + occurrences: + PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItemOccurrencesList, + severity: S.Number, + confidence: S.Number, + isResolvable: S.Boolean, + vulnerableComponentUniqueId: S.String, + description: S.String, + remediationInstructions: S.String, + cveId: S.optional(S.String), + cvss3Vector: S.optional(S.String), + cvss3Score: S.optional(S.Number), + }), + ).annotate({ + identifier: + "PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItem", + }) as any as S.Schema; + +export type PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesList = + Array; +export const PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesList = + /*@__PURE__*/ S.Array( + PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesItem, + ) as any as S.Schema; + +export interface PutStaticAnalysisCodeVulnerabilityConnectorsRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesList; +} +export const PutStaticAnalysisCodeVulnerabilityConnectorsRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + resources: + PutStaticAnalysisCodeVulnerabilityConnectorsRequestResourcesList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/v1/resources/static_analysis_code_vulnerability_connectors", + code: 200, + }), + ), + ).annotate({ + identifier: "PutStaticAnalysisCodeVulnerabilityConnectorsRequest", + }) as any as S.Schema; + +export interface PutStaticAnalysisCodeVulnerabilityConnectorsResponse { + success: boolean; +} +export const PutStaticAnalysisCodeVulnerabilityConnectorsResponse = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), + ).annotate({ + identifier: "PutStaticAnalysisCodeVulnerabilityConnectorsResponse", + }) as any as S.Schema; + +/** What the permission level of the user is. If your system supports more advanced roles, find the closest approximation. This will be used to help populate Vanta access reviews and help customers ensure that the right set of users have access to their relevant systems. */ +export type PutUserAccountRequestResourcesItemPermissionLevel = + | "ADMIN" + | "EDITOR" + | "BASE"; +export const PutUserAccountRequestResourcesItemPermissionLevel = + /*@__PURE__*/ S.String; + +/** The status of the user. It's acceptable to omit any deactivated users from your application, but if your application has access to deactivated users, it's preferable to send them over with this status. */ +export type PutUserAccountRequestResourcesItemStatus = "ACTIVE" | "DEACTIVATED"; +export const PutUserAccountRequestResourcesItemStatus = /*@__PURE__*/ S.String; + +/** The individual MFA setting. */ +export type PutUserAccountRequestResourcesItemMfaMethodsItem = + | "UNSUPPORTED" + | "DISABLED" + | "SMS" + | "EMAIL" + | "OTP" + | "HARDWARE_TOKEN" + | "PUSH_PROMPT"; +export const PutUserAccountRequestResourcesItemMfaMethodsItem = + /*@__PURE__*/ S.String; + +/** The MFA settings of the user. This helps customers verify that their users are adequately protecting their accounts. This value is ignored if authMethod is SSO. */ +export type PutUserAccountRequestResourcesItemMfaMethodsList = Array< + PutUserAccountRequestResourcesItemMfaMethodsItem | (string & {}) +>; +export const PutUserAccountRequestResourcesItemMfaMethodsList = + /*@__PURE__*/ S.Array( + PutUserAccountRequestResourcesItemMfaMethodsItem, + ) as any as S.Schema; + +/** How the user logs into the system. This is useful for us to validate security properties, like ensuring MFA is enabled if the user logs in with a password. */ +export type PutUserAccountRequestResourcesItemAuthMethod = + | "SSO" + | "PASSWORD" + | "TOKEN" + | "BIOMETRIC"; +export const PutUserAccountRequestResourcesItemAuthMethod = + /*@__PURE__*/ S.String; + +/** If the user belongs to any groups/teams in the product, those corresponding group IDs. We'll map these to groups in our product in the future. */ +export type PutUserAccountRequestResourcesItemGroupIdsList = Array; +export const PutUserAccountRequestResourcesItemGroupIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface PutUserAccountRequestResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** The full name of the corresponding user. If your system splits name by given name and family name, send us space separated values. */ + fullName: string; + /** In case a fullName is not relevant, like a machine account, populate this field. */ + accountName: string; + /** The email address of the user. This lets us connect accounts to Vanta users. */ + email: string; + /** What the permission level of the user is. If your system supports more advanced roles, find the closest approximation. This will be used to help populate Vanta access reviews and help customers ensure that the right set of users have access to their relevant systems. */ + permissionLevel: + | PutUserAccountRequestResourcesItemPermissionLevel + | (string & {}); + /** The time at which this user was created in the system. */ + createdTimestamp: string; + /** The status of the user. It's acceptable to omit any deactivated users from your application, but if your application has access to deactivated users, it's preferable to send them over with this status. */ + status: PutUserAccountRequestResourcesItemStatus | (string & {}); + /** This value is ignored if `authMethod` is SSO. */ + mfaEnabled: boolean; + /** The MFA settings of the user. This helps customers verify that their users are adequately protecting their accounts. This value is ignored if authMethod is SSO. */ + mfaMethods: PutUserAccountRequestResourcesItemMfaMethodsList; + /** How the user logs into the system. This is useful for us to validate security properties, like ensuring MFA is enabled if the user logs in with a password. */ + authMethod: PutUserAccountRequestResourcesItemAuthMethod | (string & {}); + /** A human readable description of the user's role. */ + roleDescription?: string; + /** The last time the user was updated in the system. */ + updatedTimestamp?: string; + /** If the user is deactivated, the timestamp of that deactivation. */ + deactivatedTimestamp?: string; + /** The time at which the user last logged in. */ + lastLoginTimestamp?: string; + /** The time at which the user last reset their password. Helps with future Vanta functionality. */ + lastPasswordResetTimestamp?: string | Redacted.Redacted; + /** If the user belongs to any groups/teams in the product, those corresponding group IDs. We'll map these to groups in our product in the future. */ + groupIds?: PutUserAccountRequestResourcesItemGroupIdsList; +} +export const PutUserAccountRequestResourcesItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + fullName: S.String, + accountName: S.String, + email: S.String, + permissionLevel: PutUserAccountRequestResourcesItemPermissionLevel, + createdTimestamp: S.String, + status: PutUserAccountRequestResourcesItemStatus, + mfaEnabled: S.Boolean, + mfaMethods: PutUserAccountRequestResourcesItemMfaMethodsList, + authMethod: PutUserAccountRequestResourcesItemAuthMethod, + roleDescription: S.optional(S.String), + updatedTimestamp: S.optional(S.String), + deactivatedTimestamp: S.optional(S.String), + lastLoginTimestamp: S.optional(S.String), + lastPasswordResetTimestamp: S.optional(S.String.pipe(T.SensitiveValue({}))), + groupIds: S.optional(PutUserAccountRequestResourcesItemGroupIdsList), + }), +).annotate({ + identifier: "PutUserAccountRequestResourcesItem", +}) as any as S.Schema; + +export type PutUserAccountRequestResourcesList = + Array; +export const PutUserAccountRequestResourcesList = /*@__PURE__*/ S.Array( + PutUserAccountRequestResourcesItem, +) as any as S.Schema; + +export interface PutUserAccountRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutUserAccountRequestResourcesList; +} +export const PutUserAccountRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + resources: PutUserAccountRequestResourcesList, + }).pipe( + T.Http({ method: "PUT", uri: "/v1/resources/user_account", code: 200 }), + ), +).annotate({ + identifier: "PutUserAccountRequest", +}) as any as S.Schema; + +export interface PutUserAccountResponse { + success: boolean; +} +export const PutUserAccountResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), +).annotate({ + identifier: "PutUserAccountResponse", +}) as any as S.Schema; + +/** The individual framework. */ +export type PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledItem = + | "SOC2" + | "ISO27001" + | "HIPAA" + | "PCI" + | "GDPR" + | "CCPA"; +export const PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledItem = + /*@__PURE__*/ S.String; + +/** The set of compliance or other framework requirements that can be satisfied when an employee completes this training. */ +export type PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledList = + Array< + | PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledItem + | (string & {}) + >; +export const PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledList = + /*@__PURE__*/ S.Array( + PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledItem, + ) as any as S.Schema; + +/** Whether the training has been fully completed. */ +export type PutUserSecurityTrainingStatusRequestResourcesItemStatus = + | "INCOMPLETE" + | "COMPLETE"; +export const PutUserSecurityTrainingStatusRequestResourcesItemStatus = + /*@__PURE__*/ S.String; + +export interface PutUserSecurityTrainingStatusRequestResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** A stable ID of a training or a course. For example: gdpr-training-123. */ + trainingId: string; + /** The name of the training. For example: "GDPR Training". */ + trainingName: string; + /** The set of compliance or other framework requirements that can be satisfied when an employee completes this training. */ + frameworksFulfilled: PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledList; + /** The name of the user completing the training. */ + traineeFullName: string; + /** The account name of the user completing the training. This field is mostly useful if the trainee doesn't have a name associated, but has an associated account with a username. */ + traineeAccountName: string; + /** The email address of the user completing the training. */ + traineeEmail: string; + /** Whether the training has been fully completed. */ + status: + | PutUserSecurityTrainingStatusRequestResourcesItemStatus + | (string & {}); + /** The time at which this training course was created. This field is useful as identifying metadata. */ + trainingCreatedTimestamp: string; + /** The time at which this training course is due for the user. Vanta will check whether employees complete their training on time. */ + trainingDueTimestamp: string; + /** The time at which this training course was completed by the user. */ + trainingCompletedTimestamp?: string; +} +export const PutUserSecurityTrainingStatusRequestResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + trainingId: S.String, + trainingName: S.String, + frameworksFulfilled: + PutUserSecurityTrainingStatusRequestResourcesItemFrameworksFulfilledList, + traineeFullName: S.String, + traineeAccountName: S.String, + traineeEmail: S.String, + status: PutUserSecurityTrainingStatusRequestResourcesItemStatus, + trainingCreatedTimestamp: S.String, + trainingDueTimestamp: S.String, + trainingCompletedTimestamp: S.optional(S.String), + }), + ).annotate({ + identifier: "PutUserSecurityTrainingStatusRequestResourcesItem", + }) as any as S.Schema; + +export type PutUserSecurityTrainingStatusRequestResourcesList = + Array; +export const PutUserSecurityTrainingStatusRequestResourcesList = + /*@__PURE__*/ S.Array( + PutUserSecurityTrainingStatusRequestResourcesItem, + ) as any as S.Schema; + +export interface PutUserSecurityTrainingStatusRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutUserSecurityTrainingStatusRequestResourcesList; +} +export const PutUserSecurityTrainingStatusRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + resourceId: S.String, + resources: PutUserSecurityTrainingStatusRequestResourcesList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/v1/resources/user_security_training_status", + code: 200, + }), + ), +).annotate({ + identifier: "PutUserSecurityTrainingStatusRequest", +}) as any as S.Schema; + +export interface PutUserSecurityTrainingStatusResponse { + success: boolean; +} +export const PutUserSecurityTrainingStatusResponse = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + success: S.Boolean, + }), +).annotate({ + identifier: "PutUserSecurityTrainingStatusResponse", +}) as any as S.Schema; + +/** The type of the system component in which a vulnerability has been detected (eg: container, source code repository). */ +export type PutVulnerableComponentRequestResourcesItemTargetType = + | "HOST" + | "SERVER" + | "CONTAINER" + | "CONTAINER_REPOSITORY" + | "CONTAINER_REPOSITORY_IMAGE" + | "CODE_REPOSITORY" + | "SERVERLESS_FUNCTION" + | "MANIFEST_FILE" + | "WORKSTATION" + | "OTHER"; +export const PutVulnerableComponentRequestResourcesItemTargetType = + /*@__PURE__*/ S.String; + +export interface PutVulnerableComponentRequestResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** A timestamp that indicates when the data being sent was collected from the vulnerable component. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field. */ + collectedTimestamp: string; + /** The name of the system component in which a vulnerability has been detected. */ + name: string; + /** Description of the system component in which a vulnerability has been detected. */ + description: string; + /** The type of the system component in which a vulnerability has been detected (eg: container, source code repository). */ + targetType: + | PutVulnerableComponentRequestResourcesItemTargetType + | (string & {}); +} +export const PutVulnerableComponentRequestResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + collectedTimestamp: S.String, + name: S.String, + description: S.String, + targetType: PutVulnerableComponentRequestResourcesItemTargetType, + }), + ).annotate({ + identifier: "PutVulnerableComponentRequestResourcesItem", + }) as any as S.Schema; + +export type PutVulnerableComponentRequestResourcesList = + Array; +export const PutVulnerableComponentRequestResourcesList = /*@__PURE__*/ S.Array( + PutVulnerableComponentRequestResourcesItem, +) as any as S.Schema; + +export interface PutVulnerableComponentRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutVulnerableComponentRequestResourcesList; +} +export const PutVulnerableComponentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + resources: PutVulnerableComponentRequestResourcesList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/v1/resources/vulnerable_component", + code: 200, + }), + ), +).annotate({ + identifier: "PutVulnerableComponentRequest", +}) as any as S.Schema; + +export interface PutVulnerableComponentResponse { + success: boolean; +} +export const PutVulnerableComponentResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), +).annotate({ + identifier: "PutVulnerableComponentResponse", +}) as any as S.Schema; + +export type PutWindowsUserComputerRequestResourcesItemProgramsItem = + GetWindowsUserComputerResponseResourcesItemProgramsItem; +export const PutWindowsUserComputerRequestResourcesItemProgramsItem = + GetWindowsUserComputerResponseResourcesItemProgramsItem; + +/** All the installed programs on the Windows system. */ +export type PutWindowsUserComputerRequestResourcesItemProgramsList = + Array; +export const PutWindowsUserComputerRequestResourcesItemProgramsList = + /*@__PURE__*/ S.Array( + GetWindowsUserComputerResponseResourcesItemProgramsItem, + ) as any as S.Schema; + +/** The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum. */ +export type PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItemBrowser = + | "CHROME" + | "FIREFOX" + | "OPERA" + | "SAFARI" + | "EDGE"; +export const PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItemBrowser = + /*@__PURE__*/ S.String; + +export interface PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItem { + /** The identifier of the browser extension. */ + extensionId: string; + /** The name of the browser extension. */ + name: string; + /** The type of browser. If you see something not on this list - if the browser is chromium based, use Chrome. Otherwise, skip sending the extension and contact Vanta for a longer term addition to this enum. */ + browser: + | PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItemBrowser + | (string & {}); +} +export const PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + extensionId: S.String, + name: S.String, + browser: + PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItemBrowser, + }), + ).annotate({ + identifier: + "PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItem", + }) as any as S.Schema; + +/** A list of browser extensions on this device. Used to match against known password managers to demonstrate use. */ +export type PutWindowsUserComputerRequestResourcesItemBrowserExtensionsList = + Array; +export const PutWindowsUserComputerRequestResourcesItemBrowserExtensionsList = + /*@__PURE__*/ S.Array( + PutWindowsUserComputerRequestResourcesItemBrowserExtensionsItem, + ) as any as S.Schema; + +export type PutWindowsUserComputerRequestResourcesItemDrivesItem = + GetWindowsUserComputerResponseResourcesItemDrivesItem; +export const PutWindowsUserComputerRequestResourcesItemDrivesItem = + GetWindowsUserComputerResponseResourcesItemDrivesItem; + +/** A list of drives on this device. Used to verify encryption status. */ +export type PutWindowsUserComputerRequestResourcesItemDrivesList = + Array; +export const PutWindowsUserComputerRequestResourcesItemDrivesList = + /*@__PURE__*/ S.Array( + GetWindowsUserComputerResponseResourcesItemDrivesItem, + ) as any as S.Schema; + +export type PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +/** If the source system cannot easily retrieve screenlock policies, it's OK to skip this data. */ +export type PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList = + Array; +export const PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + ) as any as S.Schema; + +export type PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockSettings = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockSettings = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +export interface PutWindowsUserComputerRequestResourcesItemUsersItem { + /** The user's username. Does not have to be unique. */ + username: string; + /** If the source system cannot easily retrieve screenlock policies, it's OK to skip this data. */ + screenlockPolicies: PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList; + screenlockSettings: GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + /** The last time the user logged in to the device, if available. */ + lastLoginTimestamp?: string; +} +export const PutWindowsUserComputerRequestResourcesItemUsersItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + username: S.String, + screenlockPolicies: + PutWindowsUserComputerRequestResourcesItemUsersItemScreenlockPoliciesList, + screenlockSettings: + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + lastLoginTimestamp: S.optional(S.String), + }), + ).annotate({ + identifier: "PutWindowsUserComputerRequestResourcesItemUsersItem", + }) as any as S.Schema; + +/** The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely. */ +export type PutWindowsUserComputerRequestResourcesItemUsersList = + Array; +export const PutWindowsUserComputerRequestResourcesItemUsersList = + /*@__PURE__*/ S.Array( + PutWindowsUserComputerRequestResourcesItemUsersItem, + ) as any as S.Schema; + +export type PutWindowsUserComputerRequestResourcesItemSystemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; +export const PutWindowsUserComputerRequestResourcesItemSystemScreenlockPoliciesItem = + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem; + +/** System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests. */ +export type PutWindowsUserComputerRequestResourcesItemSystemScreenlockPoliciesList = + Array; +export const PutWindowsUserComputerRequestResourcesItemSystemScreenlockPoliciesList = + /*@__PURE__*/ S.Array( + GetMacosUserComputerResponseResourcesItemUsersItemScreenlockPoliciesItem, + ) as any as S.Schema; + +export type PutWindowsUserComputerRequestResourcesItemPasswordPolicy = + GetMacosUserComputerResponseResourcesItemPasswordPolicy; +export const PutWindowsUserComputerRequestResourcesItemPasswordPolicy = + GetMacosUserComputerResponseResourcesItemPasswordPolicy; + +/** The category of the security product. */ +export type PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemCategory = + | "FIREWALL" + | "ANTIVIRUS" + | "ANTISPYWARE"; +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemCategory = + /*@__PURE__*/ S.String; + +/** The state of the security product. */ +export type PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemState = + | "ON" + | "OFF" + | "UNKNOWN"; +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemState = + /*@__PURE__*/ S.String; + +export interface PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItem { + /** The name of the security product. */ + name: string; + /** The category of the security product. */ + category: + | PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemCategory + | (string & {}); + /** The state of the security product. */ + state: + | PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemState + | (string & {}); + /** When this data was collected. */ + stateTimestamp: string; + /** Whether the security signatures are up to date. */ + signaturesUpToDate: boolean; +} +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + category: + PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemCategory, + state: + PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItemState, + stateTimestamp: S.String, + signaturesUpToDate: S.Boolean, + }), + ).annotate({ + identifier: + "PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItem", + }) as any as S.Schema; + +/** A list of services that are monitored by Windows Security Center (WSC). */ +export type PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsList = + Array; +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsList = + /*@__PURE__*/ S.Array( + PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsItem, + ) as any as S.Schema; + +/** The health of the monitored Firewall. */ +export type PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterFirewall = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterFirewall = + /*@__PURE__*/ S.String; + +/** The health of the Windows Autoupdate feature. */ +export type PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAutoupdate = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAutoupdate = + /*@__PURE__*/ S.String; + +/** The health of the monitored Antivirus solution. */ +export type PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAntivirus = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAntivirus = + /*@__PURE__*/ S.String; + +/** The health of the Internet Settings. */ +export type PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterInternetSetting = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterInternetSetting = + /*@__PURE__*/ S.String; + +/** The health of the User Account Control (UAC) capability in Windows. */ +export type PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterUserAccountControl = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterUserAccountControl = + /*@__PURE__*/ S.String; + +/** The health of the Windows Security Center Service. */ +export type PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterWindowsSecurityCenterService = + | "GOOD" + | "POOR" + | "SNOOZED" + | "NOT_MONITORED" + | "ERROR"; +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterWindowsSecurityCenterService = + /*@__PURE__*/ S.String; + +export interface PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenter { + /** The health of the monitored Firewall. */ + firewall: + | PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterFirewall + | (string & {}); + /** The health of the Windows Autoupdate feature. */ + autoupdate: + | PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAutoupdate + | (string & {}); + /** The health of the monitored Antivirus solution. */ + antivirus: + | PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAntivirus + | (string & {}); + /** The health of the Internet Settings. */ + internetSetting: + | PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterInternetSetting + | (string & {}); + /** The health of the User Account Control (UAC) capability in Windows. */ + userAccountControl: + | PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterUserAccountControl + | (string & {}); + /** The health of the Windows Security Center Service. */ + windowsSecurityCenterService: + | PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterWindowsSecurityCenterService + | (string & {}); +} +export const PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenter = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + firewall: + PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterFirewall, + autoupdate: + PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAutoupdate, + antivirus: + PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterAntivirus, + internetSetting: + PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterInternetSetting, + userAccountControl: + PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterUserAccountControl, + windowsSecurityCenterService: + PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenterWindowsSecurityCenterService, + }), + ).annotate({ + identifier: + "PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenter", + }) as any as S.Schema; + +export interface PutWindowsUserComputerRequestResourcesItem { + /** A human readable label for this resource - will be shown as-is in inventory page. */ + displayName: string; + /** A stable global identifier for this resource. */ + uniqueId: string; + /** A link to this resource on the partner site. This must be a HTTPS URL. */ + externalUrl: string; + /** A timestamp that indicates when the data being sent was collected from the host computer. In some cases, you may have staggered data collection for the various data being sent. In that case, feel free to use the latest collected timestamp for the individual data items to populate this field. */ + collectedTimestamp: string; + /** The OS name. Example: `Windows 11`. */ + osName: string; + /** The OS version. Example: `Version 10.0.22621`. */ + osVersion: string; + /** The hardware UUID/UDID of the device. */ + hardwareUuid: string; + /** The hardware serial number of the device. */ + serialNumber: string; + /** All the installed programs on the Windows system. */ + programs: PutWindowsUserComputerRequestResourcesItemProgramsList; + /** A list of browser extensions on this device. Used to match against known password managers to demonstrate use. */ + browserExtensions: PutWindowsUserComputerRequestResourcesItemBrowserExtensionsList; + /** A list of drives on this device. Used to verify encryption status. */ + drives: PutWindowsUserComputerRequestResourcesItemDrivesList; + /** The human users of the system. If it's not feasible to send only human users, prefer skipping sending users entirely. */ + users: PutWindowsUserComputerRequestResourcesItemUsersList; + /** System screenlock policy settings. Pass an empty list if this is tricky to retrieve for your system. Used for screenlock tests. */ + systemScreenlockPolicies: PutWindowsUserComputerRequestResourcesItemSystemScreenlockPoliciesList; + /** Is the system managed by a Mobile Device Management system. */ + isManaged: boolean; + /** Does the system have auto-updates enabled. */ + autoUpdatesEnabled: boolean; + /** The email address of the owner of the system, if it's known. */ + owner?: string; + passwordPolicy?: GetMacosUserComputerResponseResourcesItemPasswordPolicy; + /** A timestamp that indicates when the host computer was last enrolled within your system. If the computer has been un-enrolled and then re-enrolled, send data for the most recent enrollment. */ + lastEnrolledTimestamp?: string; + /** A list of services that are monitored by Windows Security Center (WSC). */ + windowsSecurityProducts?: PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsList; + windowsSecurityCenter?: PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenter; +} +export const PutWindowsUserComputerRequestResourcesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + uniqueId: S.String, + externalUrl: S.String, + collectedTimestamp: S.String, + osName: S.String, + osVersion: S.String, + hardwareUuid: S.String, + serialNumber: S.String, + programs: PutWindowsUserComputerRequestResourcesItemProgramsList, + browserExtensions: + PutWindowsUserComputerRequestResourcesItemBrowserExtensionsList, + drives: PutWindowsUserComputerRequestResourcesItemDrivesList, + users: PutWindowsUserComputerRequestResourcesItemUsersList, + systemScreenlockPolicies: + PutWindowsUserComputerRequestResourcesItemSystemScreenlockPoliciesList, + isManaged: S.Boolean, + autoUpdatesEnabled: S.Boolean, + owner: S.optional(S.String), + passwordPolicy: S.optional( + GetMacosUserComputerResponseResourcesItemPasswordPolicy, + ), + lastEnrolledTimestamp: S.optional(S.String), + windowsSecurityProducts: S.optional( + PutWindowsUserComputerRequestResourcesItemWindowsSecurityProductsList, + ), + windowsSecurityCenter: S.optional( + PutWindowsUserComputerRequestResourcesItemWindowsSecurityCenter, + ), + }), + ).annotate({ + identifier: "PutWindowsUserComputerRequestResourcesItem", + }) as any as S.Schema; + +export type PutWindowsUserComputerRequestResourcesList = + Array; +export const PutWindowsUserComputerRequestResourcesList = /*@__PURE__*/ S.Array( + PutWindowsUserComputerRequestResourcesItem, +) as any as S.Schema; + +export interface PutWindowsUserComputerRequest { + /** Vanta generated identifier for the given resource, and can be found on the developer console page. See the list of registered resources and their IDs on https://app.vanta.com/settings/developer-console/?tab=resources */ + resourceId: string; + resources: PutWindowsUserComputerRequestResourcesList; +} +export const PutWindowsUserComputerRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + resources: PutWindowsUserComputerRequestResourcesList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/v1/resources/windows_user_computer", + code: 200, + }), + ), +).annotate({ + identifier: "PutWindowsUserComputerRequest", +}) as any as S.Schema; + +export interface PutWindowsUserComputerResponse { + success: boolean; +} +export const PutWindowsUserComputerResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + success: S.Boolean, + }), +).annotate({ + identifier: "PutWindowsUserComputerResponse", +}) as any as S.Schema; + +export interface UploadFileForDocumentRequest { + documentId: string; + file: string; + /** Date indicating when the document is effective from. */ + effectiveAtDate?: string; + /** Description of the uploaded document. */ + description?: string; +} +export const UploadFileForDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + file: S.String, + effectiveAtDate: S.optional(S.String), + description: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/v1/documents/{documentId}/uploads", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "UploadFileForDocumentRequest", +}) as any as S.Schema; + +export type UploadedDocumentUploadedByType = "USER" | "APPLICATION"; +export const UploadedDocumentUploadedByType = /*@__PURE__*/ S.String; + +/** The actor who uploaded this document. It could be a user or an app. */ +export interface UploadedFileTUploadedBy { + type: UploadedDocumentUploadedByType; + id: string; +} +export const UploadedFileTUploadedBy = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: UploadedDocumentUploadedByType, + id: S.String, + }), +).annotate({ + identifier: "UploadedFileTUploadedBy", +}) as any as S.Schema; + +export interface UploadedFileT { + /** Unique identifier for the document. */ + id: string; + /** The file name of the document. */ + fileName: string | null; + /** The document's title. */ + title: string; + /** The document's description */ + description: string | null; + /** Mime type of the document. */ + mimeType: string; + /** The actor who uploaded this document. It could be a user or an app. */ + uploadedBy: UploadedFileTUploadedBy | null; + /** Date of when the document was uploaded. */ + creationDate: string; + /** Date when the document was last updated. */ + updatedDate: string; + /** Date of when the document was deleted. Is set to null if the document has not been deleted. */ + deletionDate: string | null; + /** The document's effective date. */ + effectiveDate: string | null; + /** The document's URL. */ + url: string; +} +export const UploadedFileT = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + fileName: S.NullOr(S.String), + title: S.String, + description: S.NullOr(S.String), + mimeType: S.String, + uploadedBy: S.NullOr(UploadedFileTUploadedBy), + creationDate: S.String, + updatedDate: S.String, + deletionDate: S.NullOr(S.String), + effectiveDate: S.NullOr(S.String), + url: S.String, + }), +).annotate({ identifier: "UploadedFileT" }) as any as S.Schema; + +export type GetApiEndpointVulnerabilityConnectorsError = VantaOpError; +/** List all API Endpoint Vulnerabilities List `ApiEndpointVulnerabilityConnectors` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getApiEndpointVulnerabilityConnectors: API.OperationMethod< + GetApiEndpointVulnerabilityConnectorsRequest, + GetApiEndpointVulnerabilityConnectorsResponse, + GetApiEndpointVulnerabilityConnectorsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetApiEndpointVulnerabilityConnectorsRequest, + output: GetApiEndpointVulnerabilityConnectorsResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetBackgroundCheckConnectorError = VantaOpError; +/** List all Background Checks List `BackgroundCheckConnector` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getBackgroundCheckConnector: API.OperationMethod< + GetBackgroundCheckConnectorRequest, + GetBackgroundCheckConnectorResponse, + GetBackgroundCheckConnectorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetBackgroundCheckConnectorRequest, + output: GetBackgroundCheckConnectorResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetCustomResourceError = VantaOpError; +/** List all Custom Resources List `CustomResource` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getCustomResource: API.OperationMethod< + GetCustomResourceRequest, + GetCustomResourceResponse, + GetCustomResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetCustomResourceRequest, + output: GetCustomResourceResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetMacosUserComputerError = VantaOpError; +/** List all MacOS User Computers List `MacosUserComputer` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getMacosUserComputer: API.OperationMethod< + GetMacosUserComputerRequest, + GetMacosUserComputerResponse, + GetMacosUserComputerError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetMacosUserComputerRequest, + output: GetMacosUserComputerResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetPackageVulnerabilityConnectorsError = VantaOpError; +/** List all Package Vulnerabilities List `PackageVulnerabilityConnectors` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getPackageVulnerabilityConnectors: API.OperationMethod< + GetPackageVulnerabilityConnectorsRequest, + GetPackageVulnerabilityConnectorsResponse, + GetPackageVulnerabilityConnectorsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetPackageVulnerabilityConnectorsRequest, + output: GetPackageVulnerabilityConnectorsResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetSecretError = VantaOpError; +/** List all secrets List `Secret` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getSecret: API.OperationMethod< + GetSecretRequest, + GetSecretResponse, + GetSecretError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetSecretRequest, + output: GetSecretResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetSecurityTaskError = VantaOpError; +/** List all security tasks List `SecurityTask` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getSecurityTask: API.OperationMethod< + GetSecurityTaskRequest, + GetSecurityTaskResponse, + GetSecurityTaskError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetSecurityTaskRequest, + output: GetSecurityTaskResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetStaticAnalysisCodeVulnerabilityConnectorsError = VantaOpError; +/** List all Static Code Analysis Vulnerabilities List `StaticAnalysisCodeVulnerabilityConnectors` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getStaticAnalysisCodeVulnerabilityConnectors: API.OperationMethod< + GetStaticAnalysisCodeVulnerabilityConnectorsRequest, + GetStaticAnalysisCodeVulnerabilityConnectorsResponse, + GetStaticAnalysisCodeVulnerabilityConnectorsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetStaticAnalysisCodeVulnerabilityConnectorsRequest, + output: GetStaticAnalysisCodeVulnerabilityConnectorsResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetUserAccountError = VantaOpError; +/** List all user accounts List `UserAccount` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getUserAccount: API.OperationMethod< + GetUserAccountRequest, + GetUserAccountResponse, + GetUserAccountError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetUserAccountRequest, + output: GetUserAccountResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetUserSecurityTrainingStatusError = VantaOpError; +/** List all user security training statuses List `UserSecurityTrainingStatus` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getUserSecurityTrainingStatus: API.OperationMethod< + GetUserSecurityTrainingStatusRequest, + GetUserSecurityTrainingStatusResponse, + GetUserSecurityTrainingStatusError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetUserSecurityTrainingStatusRequest, + output: GetUserSecurityTrainingStatusResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetVulnerableComponentError = VantaOpError; +/** List all Vulnerable Components List `VulnerableComponent` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getVulnerableComponent: API.OperationMethod< + GetVulnerableComponentRequest, + GetVulnerableComponentResponse, + GetVulnerableComponentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetVulnerableComponentRequest, + output: GetVulnerableComponentResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetWindowsUserComputerError = VantaOpError; +/** List all Windows User Computers List `WindowsUserComputer` resources for the given application. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:read-resource ``` */ +export const getWindowsUserComputer: API.OperationMethod< + GetWindowsUserComputerRequest, + GetWindowsUserComputerResponse, + GetWindowsUserComputerError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetWindowsUserComputerRequest, + output: GetWindowsUserComputerResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutApiEndpointVulnerabilityConnectorsError = VantaOpError; +/** Sync all API Endpoint Vulnerabilities To send us data related to API endpoint vulnerabilities. Note that you must first sync `VulnerableComponent` resources before sending us this data, and this sync should reference the `uniqueId` field in the `VulnerableComponent` resource. This call replaces ALL existing `ApiEndpointVulnerabilityConnectors` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `ApiEndpointVulnerabilityConnectors` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `ApiEndpointVulnerabilityConnectors`. */ +export const putApiEndpointVulnerabilityConnectors: API.OperationMethod< + PutApiEndpointVulnerabilityConnectorsRequest, + PutApiEndpointVulnerabilityConnectorsResponse, + PutApiEndpointVulnerabilityConnectorsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutApiEndpointVulnerabilityConnectorsRequest, + output: PutApiEndpointVulnerabilityConnectorsResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutBackgroundCheckConnectorError = VantaOpError; +/** Sync all Background Checks To send us data regarding employee/contractor background checks, you send us `BackgroundCheckConnector` resources. This helps us determine current background check statuses. This call replaces ALL existing `BackgroundCheckConnector` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `BackgroundCheckConnector` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `BackgroundCheckConnector`. */ +export const putBackgroundCheckConnector: API.OperationMethod< + PutBackgroundCheckConnectorRequest, + PutBackgroundCheckConnectorResponse, + PutBackgroundCheckConnectorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutBackgroundCheckConnectorRequest, + output: PutBackgroundCheckConnectorResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutCustomResourceError = VantaOpError; +/** Sync all Custom Resources To send data of custom resource that you want to build custom tests on, use `CustomResource`. This call replaces ALL existing `CustomResource` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `CustomResource` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `CustomResource`. */ +export const putCustomResource: API.OperationMethod< + PutCustomResourceRequest, + PutCustomResourceResponse, + PutCustomResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutCustomResourceRequest, + output: PutCustomResourceResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutMacosUserComputerError = VantaOpError; +/** Sync all MacOS User Computers To send us data related to employee/contractor MacOS computers, you send us `MacosUserComputer` resources. This helps us determine important security properties, like whether devices have encrypted drives, have anti-virus installed or have password managers installed. This call replaces ALL existing `MacosUserComputer` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `MacosUserComputer` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `MacosUserComputer`. */ +export const putMacosUserComputer: API.OperationMethod< + PutMacosUserComputerRequest, + PutMacosUserComputerResponse, + PutMacosUserComputerError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutMacosUserComputerRequest, + output: PutMacosUserComputerResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutPackageVulnerabilityConnectorsError = VantaOpError; +/** Sync all Package Vulnerabilities To send us data related to package vulnerabilities. Note that you must first sync `VulnerableComponent` resources before sending us this data, and this sync should reference the `uniqueId` field in the `VulnerableComponent` resource. This call replaces ALL existing `PackageVulnerabilityConnectors` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `PackageVulnerabilityConnectors` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `PackageVulnerabilityConnectors`. */ +export const putPackageVulnerabilityConnectors: API.OperationMethod< + PutPackageVulnerabilityConnectorsRequest, + PutPackageVulnerabilityConnectorsResponse, + PutPackageVulnerabilityConnectorsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutPackageVulnerabilityConnectorsRequest, + output: PutPackageVulnerabilityConnectorsResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutSecretError = VantaOpError; +/** Sync all secrets To send metadata of a secret used to access applications or infrastructure, use `Secret`. This call replaces ALL existing `Secret` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `Secret` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `Secret`. */ +export const putSecret: API.OperationMethod< + PutSecretRequest, + PutSecretResponse, + PutSecretError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutSecretRequest, + output: PutSecretResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutSecurityTaskError = VantaOpError; +/** Sync all security tasks To send us data related to security relevant tasks/follow-ups your system, you send us `SecurityTask` resources. This helps us determine whether security relevant tasks are being completed in a timely manner. This call replaces ALL existing `SecurityTask` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `SecurityTask` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `SecurityTask`. */ +export const putSecurityTask: API.OperationMethod< + PutSecurityTaskRequest, + PutSecurityTaskResponse, + PutSecurityTaskError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutSecurityTaskRequest, + output: PutSecurityTaskResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutStaticAnalysisCodeVulnerabilityConnectorsError = VantaOpError; +/** Sync all Static Code Analysis Vulnerabilities To send us data related to static code analysis vulnerabilities. Note that you must first sync `VulnerableComponent` resources before sending us this data, and this sync should reference the `uniqueId` field in the `VulnerableComponent` resource. This call replaces ALL existing `StaticAnalysisCodeVulnerabilityConnectors` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `StaticAnalysisCodeVulnerabilityConnectors` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `StaticAnalysisCodeVulnerabilityConnectors`. */ +export const putStaticAnalysisCodeVulnerabilityConnectors: API.OperationMethod< + PutStaticAnalysisCodeVulnerabilityConnectorsRequest, + PutStaticAnalysisCodeVulnerabilityConnectorsResponse, + PutStaticAnalysisCodeVulnerabilityConnectorsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutStaticAnalysisCodeVulnerabilityConnectorsRequest, + output: PutStaticAnalysisCodeVulnerabilityConnectorsResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutUserAccountError = VantaOpError; +/** Sync all user accounts To send us data related to users in your system, you send us `UserAccount` resources. Every partner must send us `UserAccount` resources. This helps us determine whether users have appropriate levels of access and have a secure authentication mechanism. This call replaces ALL existing `UserAccount` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `UserAccount` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and it is "deletedAt" time in is set to that of the `sync_all` call. The resource will still show in the Vanta UI as a Deactivated `UserAccount`, and `list_all` calls. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `UserAccount`. */ +export const putUserAccount: API.OperationMethod< + PutUserAccountRequest, + PutUserAccountResponse, + PutUserAccountError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutUserAccountRequest, + output: PutUserAccountResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutUserSecurityTrainingStatusError = VantaOpError; +/** Sync all user security training statuses To send us data related to security trainings, you send us `UserSecurityTrainingStatus` resources. This helps us determine whether users have completed their security and compliance trainings in a timely manner. This call replaces ALL existing `UserSecurityTrainingStatus` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `UserSecurityTrainingStatus` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `UserSecurityTrainingStatus`. */ +export const putUserSecurityTrainingStatus: API.OperationMethod< + PutUserSecurityTrainingStatusRequest, + PutUserSecurityTrainingStatusResponse, + PutUserSecurityTrainingStatusError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutUserSecurityTrainingStatusRequest, + output: PutUserSecurityTrainingStatusResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutVulnerableComponentError = VantaOpError; +/** Sync all Vulnerable Components To send us data related to system components that have vulnerabilities. This call replaces ALL existing `VulnerableComponent` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `VulnerableComponent` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `VulnerableComponent`. */ +export const putVulnerableComponent: API.OperationMethod< + PutVulnerableComponentRequest, + PutVulnerableComponentResponse, + PutVulnerableComponentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutVulnerableComponentRequest, + output: PutVulnerableComponentResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type PutWindowsUserComputerError = VantaOpError; +/** Sync all Windows User Computers To send us data related to employee/contractor Windows computers, you send us `WindowsUserComputer` resources. This helps us determine important security properties, like whether devices have encrypted drives, have anti-virus installed or have password managers installed. This call replaces ALL existing `WindowsUserComputer` resources for the given app and `source_id` - this is a "state of the world" sync. In other words, if a `WindowsUserComputer` resource is sent for a user in a previous `sync_all` call, but is not included in a later `sync_all` call for that customer, it is assumed to no longer exist and is deleted in Vanta. ** Headers ** ``` Authorization: Bearer ``` ** Scopes ** ``` connectors.self:write-resource ``` ** Schema ** Expand the `resources` array below for the schema of `WindowsUserComputer`. */ +export const putWindowsUserComputer: API.OperationMethod< + PutWindowsUserComputerRequest, + PutWindowsUserComputerResponse, + PutWindowsUserComputerError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: PutWindowsUserComputerRequest, + output: PutWindowsUserComputerResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UploadFileForDocumentError = VantaOpError; +/** Upload file for document Upload a file for a document. */ +export const uploadFileForDocument: API.OperationMethod< + UploadFileForDocumentRequest, + UploadedFileT, + UploadFileForDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UploadFileForDocumentRequest, + output: UploadedFileT, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); diff --git a/packages/vanta/src/services/index.ts b/packages/vanta/src/services/index.ts new file mode 100644 index 000000000..d57be2521 --- /dev/null +++ b/packages/vanta/src/services/index.ts @@ -0,0 +1,5 @@ +// AUTO-GENERATED by scripts/generate.ts. Do not edit. +export * as auditorApi from "./auditor_api.ts"; +export * as buildIntegrations from "./build_integrations.ts"; +export * as manageVanta from "./manage_vanta.ts"; +export * as webhooks from "./webhooks.ts"; diff --git a/packages/vanta/src/services/manage_vanta.ts b/packages/vanta/src/services/manage_vanta.ts new file mode 100644 index 000000000..932d3a834 --- /dev/null +++ b/packages/vanta/src/services/manage_vanta.ts @@ -0,0 +1,18850 @@ +// AUTO-GENERATED by scripts/generate.ts from .generated-specs (specs/spec-mirror-vanta). Do not edit. +import * as S from "@distilled.cloud/core/schema"; +import * as Redacted from "effect/Redacted"; +import * as API from "@distilled.cloud/core/api"; +import * as T from "../traits.ts"; +import { + VantaProtocol, + type VantaOpError, + type VantaOpContext, +} from "../protocol.ts"; +import { UnknownVantaError } from "../errors.ts"; +import * as Retry from "../retry.ts"; + +export type { VantaOpError, VantaOpContext }; + +export interface AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesItem { + /** SLA miss acknowledgement comment. This comment should describe why the SLA was missed. */ + slaViolationComment: string; + /** Remediation IDs */ + id: string; +} +export const AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slaViolationComment: S.String, + id: S.String, + }), + ).annotate({ + identifier: "AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesItem", + }) as any as S.Schema; + +/** List of vulnerability remediation IDs. */ +export type AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesList = + Array; +export const AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesList = + /*@__PURE__*/ S.Array( + AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesItem, + ) as any as S.Schema; + +export interface AcknowledgeSlaMissVulnerabilityRemediationsRequest { + /** List of vulnerability remediation IDs. */ + updates: AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesList; +} +export const AcknowledgeSlaMissVulnerabilityRemediationsRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + updates: AcknowledgeSlaMissVulnerabilityRemediationsRequestUpdatesList, + }).pipe( + T.Http({ + method: "POST", + uri: "/vulnerability-remediations/acknowledge-sla-miss", + code: 200, + }), + ), + ).annotate({ + identifier: "AcknowledgeSlaMissVulnerabilityRemediationsRequest", + }) as any as S.Schema; + +export type ResultLineStatusSUCCESS = "SUCCESS"; +export const ResultLineStatusSUCCESS = /*@__PURE__*/ S.String; + +export interface SuccessResponse { + /** Id of the record */ + id: string; + /** Status of the requested update */ + status: ResultLineStatusSUCCESS; +} +export const SuccessResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + status: ResultLineStatusSUCCESS, + }), +).annotate({ + identifier: "SuccessResponse", +}) as any as S.Schema; + +export type ResultLineStatusERROR = "ERROR"; +export const ResultLineStatusERROR = /*@__PURE__*/ S.String; + +export interface NonSuccessResponse { + /** Id of the record */ + id: string; + /** Status of the requested update */ + status: ResultLineStatusERROR; + /** Message an error message */ + message: string; +} +export const NonSuccessResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + status: ResultLineStatusERROR, + message: S.String, + }), +).annotate({ + identifier: "NonSuccessResponse", +}) as any as S.Schema; + +export type UpdateResponse = SuccessResponse | NonSuccessResponse; +export const UpdateResponse = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +/** List of results matching the length and order of the request */ +export type BulkResponseResultsList = Array; +export const BulkResponseResultsList = /*@__PURE__*/ S.Array( + UpdateResponse, +) as any as S.Schema; + +export interface BulkResponse { + /** List of results matching the length and order of the request */ + results: BulkResponseResultsList; +} +export const BulkResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: BulkResponseResultsList, + }), +).annotate({ identifier: "BulkResponse" }) as any as S.Schema; + +export interface AddControlFromLibraryRequest { + /** The ID of the control to be added. */ + controlId: string; +} +export const AddControlFromLibraryRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String, + }).pipe( + T.Http({ method: "POST", uri: "/controls/add-from-library", code: 200 }), + ), +).annotate({ + identifier: "AddControlFromLibraryRequest", +}) as any as S.Schema; + +export type ControlSource = "Vanta" | "Custom"; +export const ControlSource = /*@__PURE__*/ S.String; + +/** The security domains that the control belongs to. */ +export type ControlDomainsList = Array; +export const ControlDomainsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface Owner { + /** Unique identifier for the person. */ + id: string; + /** Name of the person that is shown in product. */ + displayName: string; + /** Email address of the person. */ + emailAddress: string; +} +export const Owner = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.String, + emailAddress: S.String, + }), +).annotate({ identifier: "Owner" }) as any as S.Schema; + +export type CustomFieldValueCase1List = Array; +export const CustomFieldValueCase1List = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type CustomFieldValue = string | CustomFieldValueCase1List; +export const CustomFieldValue = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export interface CustomField { + label: string; + value: CustomFieldValue; +} +export const CustomField = /*@__PURE__*/ S.suspend(() => + S.Struct({ + label: S.String, + value: CustomFieldValue, + }), +).annotate({ identifier: "CustomField" }) as any as S.Schema; + +/** The control's custom field values, if control custom fields is included in your Vanta instance. */ +export type ControlCustomFieldsList = Array; +export const ControlCustomFieldsList = /*@__PURE__*/ S.Array( + CustomField, +) as any as S.Schema; + +export interface Control { + /** The control's unique ID. */ + id: string; + /** The control's external ID. */ + externalId: string | null; + /** The control's name. */ + name: string; + /** The control's description. */ + description: string; + /** The control's source, either "VANTA" or "CUSTOM". */ + source: ControlSource; + /** The security domains that the control belongs to. */ + domains: ControlDomainsList; + /** The control's owner. */ + owner: Owner | null; + /** The control's GDPR role, if the control is a GDPR control. */ + role?: string | null; + /** The control's custom field values, if control custom fields is included in your Vanta instance. */ + customFields: ControlCustomFieldsList; + /** When the control was created. Returns null for Vanta library controls. */ + creationDate: string | null; + /** When the control was last modified. Returns null for Vanta library controls. */ + modificationDate: string | null; +} +export const Control = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + externalId: S.NullOr(S.String), + name: S.String, + description: S.String, + source: ControlSource, + domains: ControlDomainsList, + owner: S.NullOr(Owner), + role: S.optional(S.NullOr(S.String)), + customFields: ControlCustomFieldsList, + creationDate: S.NullOr(S.String), + modificationDate: S.NullOr(S.String), + }), +).annotate({ identifier: "Control" }) as any as S.Schema; + +/** IDs of the categories to add the control to. This cannot be empty. */ +export type AddControlToTrustCenterRequestCategoryIdsList = Array; +export const AddControlToTrustCenterRequestCategoryIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface AddControlToTrustCenterRequest { + slugId: string; + /** ID of the control to add to the Trust Center. */ + controlId: string; + /** IDs of the categories to add the control to. This cannot be empty. */ + categoryIds: AddControlToTrustCenterRequestCategoryIdsList; +} +export const AddControlToTrustCenterRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + controlId: S.String, + categoryIds: AddControlToTrustCenterRequestCategoryIdsList, + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/controls", + code: 200, + }), + ), +).annotate({ + identifier: "AddControlToTrustCenterRequest", +}) as any as S.Schema; + +/** Visibility of a control category's controls on the Trust Center. `SHAREABLE` categories are only visible to accounts with a matching access grant. */ +export type TrustCenterControlVisibility = "PUBLIC" | "SHAREABLE"; +export const TrustCenterControlVisibility = /*@__PURE__*/ S.String; + +/** Which controls a Trust Center displays, and whether their pass/fail status is shown. Set as the Trust Center's global default, or per category to override that default. */ +export type TrustCenterControlVisibilityMode = + | "SHOW_OK_ONLY" + | "SHOW_OK_AND_UNMAPPED" + | "SHOW_ALL_WITHOUT_STATUS" + | "SHOW_ALL_WITH_STATUS"; +export const TrustCenterControlVisibilityMode = /*@__PURE__*/ S.String; + +export interface TrustCenterControlCategory { + /** Unique identifier for the control category. */ + id: string; + /** Name of the category. */ + name: string; + /** Visibility of the category's controls on the Trust Center. `SHAREABLE` categories are only visible to accounts with a matching access grant. */ + visibility: TrustCenterControlVisibility; + /** Per-category status-visibility override. `null` means the category follows the Trust Center's global default. */ + statusVisibilityOverride: TrustCenterControlVisibilityMode | null; +} +export const TrustCenterControlCategory = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + visibility: TrustCenterControlVisibility, + statusVisibilityOverride: S.NullOr(TrustCenterControlVisibilityMode), + }), +).annotate({ + identifier: "TrustCenterControlCategory", +}) as any as S.Schema; + +/** The Trust Center control categories that the control belongs to. */ +export type TrustCenterControlCategoriesList = + Array; +export const TrustCenterControlCategoriesList = /*@__PURE__*/ S.Array( + TrustCenterControlCategory, +) as any as S.Schema; + +export interface TrustCenterControl { + /** Unique identifier for the control. */ + id: string; + /** The name of the control, usually a summary of the description. */ + name: string; + /** The description of the control. */ + description: string; + /** The Trust Center control categories that the control belongs to. */ + categories: TrustCenterControlCategoriesList | null; +} +export const TrustCenterControl = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + description: S.String, + categories: S.NullOr(TrustCenterControlCategoriesList), + }), +).annotate({ + identifier: "TrustCenterControl", +}) as any as S.Schema; + +export interface AddDiscoveredVendorToManagedRequest { + discoveredVendorId: string; +} +export const AddDiscoveredVendorToManagedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + discoveredVendorId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "POST", + uri: "/discovered-vendors/{discoveredVendorId}/add-to-managed", + code: 200, + }), + ), +).annotate({ + identifier: "AddDiscoveredVendorToManagedRequest", +}) as any as S.Schema; + +/** The list of risk attribute IDs the vendor has been assigned to. */ +export type VendorRiskAttributeIdsList = Array; +export const VendorRiskAttributeIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** The vendor's category. */ +export interface VendorCategory { + displayName: string; +} +export const VendorCategory = /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + }), +).annotate({ identifier: "VendorCategory" }) as any as S.Schema; + +/** The authentication method a vendor uses: - AUTH_0: The vendor authenticates using Auth0 - AZURE_AD: The vendor authenticates using Azure Active Directory - G_SUITE: The vendor authenticates using Google Workspace - O_AUTH: The vendor authenticates using OAuth - O365: The vendor authenticates using Office 365 - OKTA: The vendor authenticates using Okta - ONE_LOGIN: The vendor authenticates using OneLogin - OWA: The vendor authenticates using OWA - SSO: The vendor authenticates using SSO - USERNAME_PASSWORD: The vendor authenticates using usernames and passwords */ +export type VendorAuthenticationMethod = + | "AUTH_0" + | "AZURE_AD" + | "GOOGLE_WORKSPACE" + | "O_AUTH" + | "O365" + | "OKTA" + | "ONE_LOGIN" + | "OWA" + | "SSO" + | "USERNAME_PASSWORD" + | "OTHER"; +export const VendorAuthenticationMethod = /*@__PURE__*/ S.String; + +/** The vendor's authentication details. */ +export interface VendorAuthDetails { + /** Minimum number for chacters required for passwords for this vendor. */ + passwordMinimumLength: number | null; + /** Whether or not the vendor requires passwords to have a symbol. */ + passwordRequiresSymbol: boolean | null; + /** Whether or not the vendor requires passwords to have a number. */ + passwordRequiresNumber: boolean | null; + /** Whether or not the vendor requires passwords to have multi factor authentication. */ + passwordMFA: boolean | null; + /** The vendor's authentication method. */ + method: VendorAuthenticationMethod | null; +} +export const VendorAuthDetails = /*@__PURE__*/ S.suspend(() => + S.Struct({ + passwordMinimumLength: S.NullOr(S.Number), + passwordRequiresSymbol: S.NullOr(S.Boolean), + passwordRequiresNumber: S.NullOr(S.Boolean), + passwordMFA: S.NullOr(S.Boolean), + method: S.NullOr(VendorAuthenticationMethod), + }), +).annotate({ + identifier: "VendorAuthDetails", +}) as any as S.Schema; + +/** The current state of a vendor: - MANAGED: The vendor is actively managed. - ARCHIVED: The vendor has been archived - IN_PROCUREMENT: The vendor is in the procurement process */ +export type VendorStatus = "MANAGED" | "ARCHIVED" | "IN_PROCUREMENT"; +export const VendorStatus = /*@__PURE__*/ S.String; + +/** The risk level of a vendor: - CRITICAL: The vendor has a critical security risk - HIGH: The vendor has a high security risk - MEDIUM: The vendor has a medium security risk - LOW: The vendor has a low security risk - UNSCORED: The vendor has not been given a risk level */ +export type VendorRiskLevel = + | "CRITICAL" + | "HIGH" + | "LOW" + | "MEDIUM" + | "UNSCORED"; +export const VendorRiskLevel = /*@__PURE__*/ S.String; + +export type CountryCode = + | "EUE" + | "AND" + | "ARE" + | "AFG" + | "ATG" + | "AIA" + | "ALB" + | "ARM" + | "AGO" + | "ATA" + | "ARG" + | "ASM" + | "AUT" + | "AUS" + | "ABW" + | "ALA" + | "AZE" + | "BIH" + | "BRB" + | "BGD" + | "BEL" + | "BFA" + | "BGR" + | "BHR" + | "BDI" + | "BEN" + | "BLM" + | "BMU" + | "BRN" + | "BOL" + | "BES" + | "BRA" + | "BHS" + | "BTN" + | "BVT" + | "BWA" + | "BLR" + | "BLZ" + | "CAN" + | "CCK" + | "COD" + | "CAF" + | "COG" + | "CHE" + | "CIV" + | "COK" + | "CHL" + | "CMR" + | "CHN" + | "COL" + | "CRI" + | "CUB" + | "CPV" + | "CUW" + | "CXR" + | "CYP" + | "CZE" + | "DEU" + | "DJI" + | "DNK" + | "DMA" + | "DOM" + | "DZA" + | "ECU" + | "EST" + | "EGY" + | "ESH" + | "ERI" + | "ESP" + | "ETH" + | "FIN" + | "FJI" + | "FLK" + | "FSM" + | "FRO" + | "FRA" + | "GAB" + | "ENG" + | "SCT" + | "GBR" + | "WAL" + | "NIR" + | "GRD" + | "GEO" + | "GUF" + | "GGY" + | "GHA" + | "GIB" + | "GRL" + | "GMB" + | "GIN" + | "GLP" + | "GNQ" + | "GRC" + | "SGS" + | "GTM" + | "GUM" + | "GNB" + | "GUY" + | "HKG" + | "HMD" + | "HND" + | "HRV" + | "HTI" + | "HUN" + | "IDN" + | "IRL" + | "ISR" + | "IMN" + | "IND" + | "IOT" + | "IRQ" + | "IRN" + | "ISL" + | "ITA" + | "JEY" + | "JAM" + | "JOR" + | "JPN" + | "KEN" + | "KGZ" + | "KHM" + | "KIR" + | "COM" + | "KNA" + | "PRK" + | "KOR" + | "KWT" + | "CYM" + | "KAZ" + | "LAO" + | "LBN" + | "LCA" + | "LIE" + | "LKA" + | "LBR" + | "LSO" + | "LTU" + | "LUX" + | "LVA" + | "LBY" + | "MAR" + | "MCO" + | "MDA" + | "MNE" + | "MAF" + | "MDG" + | "MHL" + | "MKD" + | "MLI" + | "MMR" + | "MNG" + | "MAC" + | "MNP" + | "MTQ" + | "MRT" + | "MSR" + | "MLT" + | "MUS" + | "MDV" + | "MWI" + | "MEX" + | "MYS" + | "MOZ" + | "NAM" + | "NCL" + | "NER" + | "NFK" + | "NGA" + | "NIC" + | "NLD" + | "NOR" + | "NPL" + | "NRU" + | "NIU" + | "NZL" + | "OMN" + | "PAN" + | "PER" + | "PYF" + | "PNG" + | "PHL" + | "PAK" + | "POL" + | "SPM" + | "PCN" + | "PRI" + | "PSE" + | "PRT" + | "PLW" + | "PRY" + | "QAT" + | "REU" + | "ROU" + | "SRB" + | "RUS" + | "RWA" + | "SAU" + | "SLB" + | "SYC" + | "SDN" + | "SWE" + | "SGP" + | "SHN" + | "SVN" + | "SJM" + | "SVK" + | "SLE" + | "SMR" + | "SEN" + | "SOM" + | "SUR" + | "SSD" + | "STP" + | "SLV" + | "SXM" + | "SYR" + | "SWZ" + | "TCA" + | "TCD" + | "ATF" + | "TGO" + | "THA" + | "TJK" + | "TKL" + | "TLS" + | "TKM" + | "TUN" + | "TON" + | "TUR" + | "TTO" + | "TUV" + | "TWN" + | "TZA" + | "UKR" + | "UGA" + | "UMI" + | "USA" + | "URY" + | "UZB" + | "VAT" + | "VCT" + | "VEN" + | "VGB" + | "VIR" + | "VNM" + | "VUT" + | "WLF" + | "WSM" + | "YEM" + | "MYT" + | "ZAF" + | "ZMB" + | "ZWE"; +export const CountryCode = /*@__PURE__*/ S.String; + +export type CurrencyCode = + | "ARS" + | "AUD" + | "BRL" + | "CAD" + | "COP" + | "CZK" + | "DKK" + | "EUR" + | "GBP" + | "ILS" + | "INR" + | "JPY" + | "MXN" + | "NOK" + | "NZD" + | "PHP" + | "PKR" + | "PLN" + | "RSD" + | "SEK" + | "SGD" + | "UAH" + | "USD" + | "ZAR"; +export const CurrencyCode = /*@__PURE__*/ S.String; + +export interface VendorContractAmount { + /** The amount of the contract. */ + amount: number; + /** The currency of the contract. */ + currency: CurrencyCode | (string & {}); +} +export const VendorContractAmount = /*@__PURE__*/ S.suspend(() => + S.Struct({ + amount: S.Number, + currency: CurrencyCode, + }), +).annotate({ + identifier: "VendorContractAmount", +}) as any as S.Schema; + +/** The vendor's custom fields. */ +export type VendorCustomFieldsList = Array; +export const VendorCustomFieldsList = /*@__PURE__*/ S.Array( + CustomField, +) as any as S.Schema; + +export type VendorDecisionStatus = + | "APPROVED" + | "CONDITIONALLY_APPROVED" + | "NOT_APPROVED"; +export const VendorDecisionStatus = /*@__PURE__*/ S.String; + +/** The decision for a vendor. */ +export interface VendorDecision { + status: VendorDecisionStatus; + lastUpdatedAt: string; +} +export const VendorDecision = /*@__PURE__*/ S.suspend(() => + S.Struct({ + status: VendorDecisionStatus, + lastUpdatedAt: S.String, + }), +).annotate({ identifier: "VendorDecision" }) as any as S.Schema; + +/** The task tracker procurement request associated with this vendor (if linked). */ +export interface VendorLinkedTaskTrackerTaskProcurementRequest { + url: string; + service: string; +} +export const VendorLinkedTaskTrackerTaskProcurementRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + url: S.String, + service: S.String, + }), + ).annotate({ + identifier: "VendorLinkedTaskTrackerTaskProcurementRequest", + }) as any as S.Schema; + +export interface Vendor { + /** The vendor's unique ID. */ + id: string; + /** The vendor's display name. */ + name: string; + /** The vendor's website URL. */ + websiteUrl: string | null; + /** The vendor's external account manager name. */ + accountManagerName: string | null; + /** The vendor's external account manager email. */ + accountManagerEmail: string | null; + /** Services provided by the vendor. */ + servicesProvided: string | null; + /** Any additional notes about the vendor */ + additionalNotes: string | null; + /** The vendor's security owner's Vanta user ID. */ + securityOwnerUserId: string | null; + /** The vendor's business owner's Vanta user ID. */ + businessOwnerUserId: string | null; + /** The date the contract with the vendor began. */ + contractStartDate: string | null; + /** The date the contract with the vendor is up for renewal. */ + contractRenewalDate: string | null; + /** The date the contract with the vendor was terminated. */ + contractTerminationDate: string | null; + /** The next due date for a security review. */ + nextSecurityReviewDueDate: string | null; + /** The most recent date a security review was completed. */ + lastSecurityReviewCompletionDate: string | null; + /** Whether or not auditors can view this vendor. */ + isVisibleToAuditors: boolean | null; + /** Whether or not the vendor's risk is automatically scored. */ + isRiskAutoScored: boolean | null; + /** The list of risk attribute IDs the vendor has been assigned to. */ + riskAttributeIds: VendorRiskAttributeIdsList; + /** The vendor's category. */ + category: VendorCategory | null; + /** The vendor's authentication details. */ + authDetails: VendorAuthDetails; + /** The vendor's current status. */ + status: VendorStatus; + /** The vendor's risk level. */ + inherentRiskLevel: VendorRiskLevel; + /** The vendor's residual risk level. */ + residualRiskLevel: VendorRiskLevel; + /** The vendor's headquarters. */ + vendorHeadquarters: CountryCode | null; + /** The contract amount for the vendor. */ + contractAmount: VendorContractAmount | null; + /** The vendor's custom fields. */ + customFields: VendorCustomFieldsList | null; + /** The vendor's latest decision status. Null means no decision has been made. */ + latestDecision: VendorDecision | null; + /** The task tracker procurement request associated with this vendor (if linked). */ + linkedTaskTrackerTaskProcurementRequest: VendorLinkedTaskTrackerTaskProcurementRequest | null; +} +export const Vendor = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + websiteUrl: S.NullOr(S.String), + accountManagerName: S.NullOr(S.String), + accountManagerEmail: S.NullOr(S.String), + servicesProvided: S.NullOr(S.String), + additionalNotes: S.NullOr(S.String), + securityOwnerUserId: S.NullOr(S.String), + businessOwnerUserId: S.NullOr(S.String), + contractStartDate: S.NullOr(S.String), + contractRenewalDate: S.NullOr(S.String), + contractTerminationDate: S.NullOr(S.String), + nextSecurityReviewDueDate: S.NullOr(S.String), + lastSecurityReviewCompletionDate: S.NullOr(S.String), + isVisibleToAuditors: S.NullOr(S.Boolean), + isRiskAutoScored: S.NullOr(S.Boolean), + riskAttributeIds: VendorRiskAttributeIdsList, + category: S.NullOr(VendorCategory), + authDetails: VendorAuthDetails, + status: VendorStatus, + inherentRiskLevel: VendorRiskLevel, + residualRiskLevel: VendorRiskLevel, + vendorHeadquarters: S.NullOr(CountryCode), + contractAmount: S.NullOr(VendorContractAmount), + customFields: S.NullOr(VendorCustomFieldsList), + latestDecision: S.NullOr(VendorDecision), + linkedTaskTrackerTaskProcurementRequest: S.NullOr( + VendorLinkedTaskTrackerTaskProcurementRequest, + ), + }), +).annotate({ identifier: "Vendor" }) as any as S.Schema; + +export interface AddDocumentToControlRequest { + controlId: string; + /** The ID of the document to add to the control. */ + documentId: string; +} +export const AddDocumentToControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String.pipe(T.Label()), + documentId: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/controls/{controlId}/add-document-to-control", + code: 200, + }), + ), +).annotate({ + identifier: "AddDocumentToControlRequest", +}) as any as S.Schema; + +export type DocumentAndTestCategory = + | "Accounts access" + | "Account security" + | "Account setup" + | "Computers" + | "Custom" + | "Data storage" + | "Employees" + | "Infrastructure" + | "IT" + | "Logging" + | "Monitoring alerts" + | "People" + | "Policies" + | "Risk analysis" + | "Software development" + | "CSPM alert management" + | "Vendors" + | "Vulnerability management"; +export const DocumentAndTestCategory = /*@__PURE__*/ S.String; + +export type DocumentStatus = + | "Needs document" + | "Needs update" + | "Not relevant" + | "OK"; +export const DocumentStatus = /*@__PURE__*/ S.String; + +export interface Document { + /** The document's unique ID. */ + id: string; + /** The user ID of the document's owner. */ + ownerId: string | null; + /** The document's category. */ + category: DocumentAndTestCategory; + /** The document's description. */ + description: string; + /** Determines whether or not the document is sensitive. */ + isSensitive: boolean; + /** The document's title. */ + title: string; + /** The document's status. */ + uploadStatus: DocumentStatus; + /** The date the document's uploadStatus changed. */ + uploadStatusDate: string | null; + /** The URL to view the document within Vanta. */ + url: string | null; +} +export const Document = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + ownerId: S.NullOr(S.String), + category: DocumentAndTestCategory, + description: S.String, + isSensitive: S.Boolean, + title: S.String, + uploadStatus: DocumentStatus, + uploadStatusDate: S.NullOr(S.String), + url: S.NullOr(S.String), + }), +).annotate({ identifier: "Document" }) as any as S.Schema; + +export interface AddDocumentToControlResponse { + document: Document; + control: Control; +} +export const AddDocumentToControlResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + document: Document, + control: Control, + }), +).annotate({ + identifier: "AddDocumentToControlResponse", +}) as any as S.Schema; + +export interface AddPeopleToGroupRequestUpdatesItem { + id: string; +} +export const AddPeopleToGroupRequestUpdatesItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + }), +).annotate({ + identifier: "AddPeopleToGroupRequestUpdatesItem", +}) as any as S.Schema; + +/** List of people IDs to add a group. */ +export type AddPeopleToGroupRequestUpdatesList = + Array; +export const AddPeopleToGroupRequestUpdatesList = /*@__PURE__*/ S.Array( + AddPeopleToGroupRequestUpdatesItem, +) as any as S.Schema; + +export interface AddPeopleToGroupRequest { + groupId: string; + /** List of people IDs to add a group. */ + updates: AddPeopleToGroupRequestUpdatesList; +} +export const AddPeopleToGroupRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + groupId: S.String.pipe(T.Label()), + updates: AddPeopleToGroupRequestUpdatesList, + }).pipe( + T.Http({ method: "POST", uri: "/groups/{groupId}/add-people", code: 200 }), + ), +).annotate({ + identifier: "AddPeopleToGroupRequest", +}) as any as S.Schema; + +export interface AddPersonToGroupRequest { + groupId: string; + id: string; +} +export const AddPersonToGroupRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + groupId: S.String.pipe(T.Label()), + id: S.String, + }).pipe( + T.Http({ method: "POST", uri: "/groups/{groupId}/people", code: 200 }), + ), +).annotate({ + identifier: "AddPersonToGroupRequest", +}) as any as S.Schema; + +/** The employment status of a person: - UPCOMING: The person is not yet employed and will start employment in the future. - CURRENT: The person is currently employed. - ON_LEAVE: The person is on leave. - INACTIVE: The person's employment is inactive. - FORMER: The person was previously employed. */ +export type EmploymentStatus = + | "UPCOMING" + | "CURRENT" + | "ON_LEAVE" + | "INACTIVE" + | "FORMER"; +export const EmploymentStatus = /*@__PURE__*/ S.String; + +export interface PersonEmployment { + /** The person's employment status. */ + status: EmploymentStatus; + /** The date the person's employment started. */ + startDate: string; + /** The person's job title. */ + jobTitle: string | null; + /** If present, the date the person's employment ended. */ + endDate: string | null; +} +export const PersonEmployment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + status: EmploymentStatus, + startDate: S.String, + jobTitle: S.NullOr(S.String), + endDate: S.NullOr(S.String), + }), +).annotate({ + identifier: "PersonEmployment", +}) as any as S.Schema; + +/** User can be active or upcoming leave period */ +export type LeaveStatus = "ACTIVE" | "UPCOMING"; +export const LeaveStatus = /*@__PURE__*/ S.String; + +export interface LeaveInfo { + /** The start of the person's leave. */ + startDate: string; + /** The end of the person's leave. Null endDate implies indefinite leave. */ + endDate: string | null; + /** ACTIVE if the leave is currently ongoing. UPCOMING if the startDate is in the future. */ + status: LeaveStatus; +} +export const LeaveInfo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + startDate: S.String, + endDate: S.NullOr(S.String), + status: LeaveStatus, + }), +).annotate({ identifier: "LeaveInfo" }) as any as S.Schema; + +/** The id of each group the user belongs to. This includes both manually created groups in Vanta and groups imported from an identity provider. */ +export type PersonGroupIdsList = Array; +export const PersonGroupIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface PersonName { + /** The person's first (given) name. */ + first: string | null; + /** The person's last (family) name. */ + last: string | null; + /** The person's display name, used in Vanta. */ + display: string; +} +export const PersonName = /*@__PURE__*/ S.suspend(() => + S.Struct({ + first: S.NullOr(S.String), + last: S.NullOr(S.String), + display: S.String, + }), +).annotate({ identifier: "PersonName" }) as any as S.Schema; + +export type PersonInfoSourceTypeVANTA = "VANTA"; +export const PersonInfoSourceTypeVANTA = /*@__PURE__*/ S.String; + +/** The person's information comes from what is set in Vanta. */ +export interface VantaBasedPersonInfoSource { + type: PersonInfoSourceTypeVANTA; +} +export const VantaBasedPersonInfoSource = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: PersonInfoSourceTypeVANTA, + }), +).annotate({ + identifier: "VantaBasedPersonInfoSource", +}) as any as S.Schema; + +export type PersonInfoSourceTypeSCIM = "SCIM"; +export const PersonInfoSourceTypeSCIM = /*@__PURE__*/ S.String; + +/** The person's information comes from SCIM. */ +export interface ScimBasedPersonInfoSource { + type: PersonInfoSourceTypeSCIM; +} +export const ScimBasedPersonInfoSource = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: PersonInfoSourceTypeSCIM, + }), +).annotate({ + identifier: "ScimBasedPersonInfoSource", +}) as any as S.Schema; + +export type PersonInfoSourceTypeINTEGRATION = "INTEGRATION"; +export const PersonInfoSourceTypeINTEGRATION = /*@__PURE__*/ S.String; + +/** The person's information comes from an integration. */ +export interface IntegrationBasedPersonInfoSource { + integrationId: string; + resourceId: string | null; + type: PersonInfoSourceTypeINTEGRATION; +} +export const IntegrationBasedPersonInfoSource = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String, + resourceId: S.NullOr(S.String), + type: PersonInfoSourceTypeINTEGRATION, + }), +).annotate({ + identifier: "IntegrationBasedPersonInfoSource", +}) as any as S.Schema; + +/** The source of the person's information. */ +export type PersonInfoSource = + | VantaBasedPersonInfoSource + | ScimBasedPersonInfoSource + | IntegrationBasedPersonInfoSource; +export const PersonInfoSource = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export interface PersonSourcesEmployment { + /** The source of the person's employment end date. */ + endDate: PersonInfoSource; + /** The source of the person's employment start date. */ + startDate: PersonInfoSource; +} +export const PersonSourcesEmployment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + endDate: PersonInfoSource, + startDate: PersonInfoSource, + }), +).annotate({ + identifier: "PersonSourcesEmployment", +}) as any as S.Schema; + +/** The sources of the person's information. */ +export interface PersonSources { + employment: PersonSourcesEmployment; + /** The source of the person's email address. */ + emailAddress: PersonInfoSource; +} +export const PersonSources = /*@__PURE__*/ S.suspend(() => + S.Struct({ + employment: PersonSourcesEmployment, + emailAddress: PersonInfoSource, + }), +).annotate({ identifier: "PersonSources" }) as any as S.Schema; + +export type TaskTypeCOMPLETETRAININGS = "COMPLETE_TRAININGS"; +export const TaskTypeCOMPLETETRAININGS = /*@__PURE__*/ S.String; + +/** The status of a task. - COMPLETE: The task has been completed. - DUE_SOON: The task is due soon. - OVERDUE: The task is overdue. - NONE: The task is not assigned. */ +export type TaskStatus = "COMPLETE" | "DUE_SOON" | "OVERDUE" | "NONE"; +export const TaskStatus = /*@__PURE__*/ S.String; + +/** If the task is disabled, the reason and date when it was disabled. */ +export interface CompleteTrainingsTaskSummaryDisabled { + date: string; + reason: string | null; +} +export const CompleteTrainingsTaskSummaryDisabled = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + date: S.String, + reason: S.NullOr(S.String), + }), +).annotate({ + identifier: "CompleteTrainingsTaskSummaryDisabled", +}) as any as S.Schema; + +/** A person's security training. */ +export interface Training { + name: string; +} +export const Training = /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + }), +).annotate({ identifier: "Training" }) as any as S.Schema; + +/** Incomplete security trainings that are relevant given a person's requirements. */ +export type CompleteTrainingsTaskSummaryIncompleteTrainingsList = + Array; +export const CompleteTrainingsTaskSummaryIncompleteTrainingsList = + /*@__PURE__*/ S.Array( + Training, + ) as any as S.Schema; + +/** Security trainings that have been completed and are relevant given a person's current requirements. */ +export type CompleteTrainingsTaskSummaryCompletedTrainingsList = + Array; +export const CompleteTrainingsTaskSummaryCompletedTrainingsList = + /*@__PURE__*/ S.Array( + Training, + ) as any as S.Schema; + +/** Task summary for completing all trainings. */ +export interface CompleteTrainingsTaskSummary { + taskType: TaskTypeCOMPLETETRAININGS; + status: TaskStatus; + /** The due date of the task. */ + dueDate: string | null; + /** The date the task was completed. */ + completionDate: string | null; + /** If the task is disabled, the reason and date when it was disabled. */ + disabled: CompleteTrainingsTaskSummaryDisabled | null; + /** Incomplete security trainings that are relevant given a person's requirements. */ + incompleteTrainings: CompleteTrainingsTaskSummaryIncompleteTrainingsList; + /** Security trainings that have been completed and are relevant given a person's current requirements. */ + completedTrainings: CompleteTrainingsTaskSummaryCompletedTrainingsList; +} +export const CompleteTrainingsTaskSummary = /*@__PURE__*/ S.suspend(() => + S.Struct({ + taskType: TaskTypeCOMPLETETRAININGS, + status: TaskStatus, + dueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + disabled: S.NullOr(CompleteTrainingsTaskSummaryDisabled), + incompleteTrainings: CompleteTrainingsTaskSummaryIncompleteTrainingsList, + completedTrainings: CompleteTrainingsTaskSummaryCompletedTrainingsList, + }), +).annotate({ + identifier: "CompleteTrainingsTaskSummary", +}) as any as S.Schema; + +export type TaskTypeACCEPTPOLICIES = "ACCEPT_POLICIES"; +export const TaskTypeACCEPTPOLICIES = /*@__PURE__*/ S.String; + +/** If the task is disabled, the reason and date when it was disabled. */ +export type AcceptPoliciesTaskSummaryDisabled = + CompleteTrainingsTaskSummaryDisabled; +export const AcceptPoliciesTaskSummaryDisabled = + CompleteTrainingsTaskSummaryDisabled; + +export type AcceptPoliciesTaskSummaryUnacceptedPoliciesItem = Training; +export const AcceptPoliciesTaskSummaryUnacceptedPoliciesItem = Training; + +/** Unaccepted policies that are relevant to the person. */ +export type AcceptPoliciesTaskSummaryUnacceptedPoliciesList = Array; +export const AcceptPoliciesTaskSummaryUnacceptedPoliciesList = + /*@__PURE__*/ S.Array( + Training, + ) as any as S.Schema; + +export type AcceptPoliciesTaskSummaryAcceptedPoliciesItem = Training; +export const AcceptPoliciesTaskSummaryAcceptedPoliciesItem = Training; + +/** Accepted policies that are relevant to the person. */ +export type AcceptPoliciesTaskSummaryAcceptedPoliciesList = Array; +export const AcceptPoliciesTaskSummaryAcceptedPoliciesList = + /*@__PURE__*/ S.Array( + Training, + ) as any as S.Schema; + +/** Policy acceptance details for a person. */ +export interface AcceptPoliciesTaskSummary { + taskType: TaskTypeACCEPTPOLICIES; + status: TaskStatus; + /** The due date of the task. */ + dueDate: string | null; + /** The date the task was completed. */ + completionDate: string | null; + /** If the task is disabled, the reason and date when it was disabled. */ + disabled: CompleteTrainingsTaskSummaryDisabled | null; + /** Unaccepted policies that are relevant to the person. */ + unacceptedPolicies: AcceptPoliciesTaskSummaryUnacceptedPoliciesList; + /** Accepted policies that are relevant to the person. */ + acceptedPolicies: AcceptPoliciesTaskSummaryAcceptedPoliciesList; +} +export const AcceptPoliciesTaskSummary = /*@__PURE__*/ S.suspend(() => + S.Struct({ + taskType: TaskTypeACCEPTPOLICIES, + status: TaskStatus, + dueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + disabled: S.NullOr(CompleteTrainingsTaskSummaryDisabled), + unacceptedPolicies: AcceptPoliciesTaskSummaryUnacceptedPoliciesList, + acceptedPolicies: AcceptPoliciesTaskSummaryAcceptedPoliciesList, + }), +).annotate({ + identifier: "AcceptPoliciesTaskSummary", +}) as any as S.Schema; + +export type TaskTypeCOMPLETECUSTOMTASKS = "COMPLETE_CUSTOM_TASKS"; +export const TaskTypeCOMPLETECUSTOMTASKS = /*@__PURE__*/ S.String; + +/** If the task is disabled, the reason and date when it was disabled. */ +export type CompleteCustomTasksTaskSummaryDisabled = + CompleteTrainingsTaskSummaryDisabled; +export const CompleteCustomTasksTaskSummaryDisabled = + CompleteTrainingsTaskSummaryDisabled; + +/** A custom task. */ +export type CustomTask = Training; +export const CustomTask = Training; + +/** Incomplete custom tasks that are relevant given a person's requirements. */ +export type CompleteCustomTasksTaskSummaryIncompleteCustomTasksList = + Array; +export const CompleteCustomTasksTaskSummaryIncompleteCustomTasksList = + /*@__PURE__*/ S.Array( + Training, + ) as any as S.Schema; + +/** Custom tasks that have been completed and are relevant given a person's current requirements. */ +export type CompleteCustomTasksTaskSummaryCompletedCustomTasksList = + Array; +export const CompleteCustomTasksTaskSummaryCompletedCustomTasksList = + /*@__PURE__*/ S.Array( + Training, + ) as any as S.Schema; + +/** Task summary for completing all custom tasks. */ +export interface CompleteCustomTasksTaskSummary { + taskType: TaskTypeCOMPLETECUSTOMTASKS; + status: TaskStatus; + /** The due date of the task. */ + dueDate: string | null; + /** The date the task was completed. */ + completionDate: string | null; + /** If the task is disabled, the reason and date when it was disabled. */ + disabled: CompleteTrainingsTaskSummaryDisabled | null; + /** Incomplete custom tasks that are relevant given a person's requirements. */ + incompleteCustomTasks: CompleteCustomTasksTaskSummaryIncompleteCustomTasksList; + /** Custom tasks that have been completed and are relevant given a person's current requirements. */ + completedCustomTasks: CompleteCustomTasksTaskSummaryCompletedCustomTasksList; +} +export const CompleteCustomTasksTaskSummary = /*@__PURE__*/ S.suspend(() => + S.Struct({ + taskType: TaskTypeCOMPLETECUSTOMTASKS, + status: TaskStatus, + dueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + disabled: S.NullOr(CompleteTrainingsTaskSummaryDisabled), + incompleteCustomTasks: + CompleteCustomTasksTaskSummaryIncompleteCustomTasksList, + completedCustomTasks: + CompleteCustomTasksTaskSummaryCompletedCustomTasksList, + }), +).annotate({ + identifier: "CompleteCustomTasksTaskSummary", +}) as any as S.Schema; + +export type TaskTypeCOMPLETECUSTOMOFFBOARDINGTASKS = + "COMPLETE_CUSTOM_OFFBOARDING_TASKS"; +export const TaskTypeCOMPLETECUSTOMOFFBOARDINGTASKS = /*@__PURE__*/ S.String; + +/** If the task is disabled, the reason and date when it was disabled. */ +export type CompleteOffboardingCustomTasksTaskSummaryDisabled = + CompleteTrainingsTaskSummaryDisabled; +export const CompleteOffboardingCustomTasksTaskSummaryDisabled = + CompleteTrainingsTaskSummaryDisabled; + +/** Incomplete custom tasks that are relevant given a person's requirements. */ +export type CompleteOffboardingCustomTasksTaskSummaryIncompleteCustomOffboardingTasksList = + Array; +export const CompleteOffboardingCustomTasksTaskSummaryIncompleteCustomOffboardingTasksList = + /*@__PURE__*/ S.Array( + Training, + ) as any as S.Schema; + +/** Custom tasks that have been completed and are relevant given a person's current requirements. */ +export type CompleteOffboardingCustomTasksTaskSummaryCompletedCustomOffboardingTasksList = + Array; +export const CompleteOffboardingCustomTasksTaskSummaryCompletedCustomOffboardingTasksList = + /*@__PURE__*/ S.Array( + Training, + ) as any as S.Schema; + +/** Task summary for completing all offboarding custom tasks. */ +export interface CompleteOffboardingCustomTasksTaskSummary { + taskType: TaskTypeCOMPLETECUSTOMOFFBOARDINGTASKS; + status: TaskStatus; + /** The due date of the task. */ + dueDate: string | null; + /** The date the task was completed. */ + completionDate: string | null; + /** If the task is disabled, the reason and date when it was disabled. */ + disabled: CompleteTrainingsTaskSummaryDisabled | null; + /** Incomplete custom tasks that are relevant given a person's requirements. */ + incompleteCustomOffboardingTasks: CompleteOffboardingCustomTasksTaskSummaryIncompleteCustomOffboardingTasksList; + /** Custom tasks that have been completed and are relevant given a person's current requirements. */ + completedCustomOffboardingTasks: CompleteOffboardingCustomTasksTaskSummaryCompletedCustomOffboardingTasksList; +} +export const CompleteOffboardingCustomTasksTaskSummary = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + taskType: TaskTypeCOMPLETECUSTOMOFFBOARDINGTASKS, + status: TaskStatus, + dueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + disabled: S.NullOr(CompleteTrainingsTaskSummaryDisabled), + incompleteCustomOffboardingTasks: + CompleteOffboardingCustomTasksTaskSummaryIncompleteCustomOffboardingTasksList, + completedCustomOffboardingTasks: + CompleteOffboardingCustomTasksTaskSummaryCompletedCustomOffboardingTasksList, + }), + ).annotate({ + identifier: "CompleteOffboardingCustomTasksTaskSummary", + }) as any as S.Schema; + +export type TaskTypeINSTALLDEVICEMONITORING = "INSTALL_DEVICE_MONITORING"; +export const TaskTypeINSTALLDEVICEMONITORING = /*@__PURE__*/ S.String; + +/** If the task is disabled, the reason and date when it was disabled. */ +export type InstallDeviceMonitoringTaskSummaryDisabled = + CompleteTrainingsTaskSummaryDisabled; +export const InstallDeviceMonitoringTaskSummaryDisabled = + CompleteTrainingsTaskSummaryDisabled; + +/** Task summary for installing device monitoring. */ +export interface InstallDeviceMonitoringTaskSummary { + taskType: TaskTypeINSTALLDEVICEMONITORING; + status: TaskStatus; + /** The due date of the task. */ + dueDate: string | null; + /** The date the task was completed. */ + completionDate: string | null; + /** If the task is disabled, the reason and date when it was disabled. */ + disabled: CompleteTrainingsTaskSummaryDisabled | null; +} +export const InstallDeviceMonitoringTaskSummary = /*@__PURE__*/ S.suspend(() => + S.Struct({ + taskType: TaskTypeINSTALLDEVICEMONITORING, + status: TaskStatus, + dueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + disabled: S.NullOr(CompleteTrainingsTaskSummaryDisabled), + }), +).annotate({ + identifier: "InstallDeviceMonitoringTaskSummary", +}) as any as S.Schema; + +export type TaskTypeCOMPLETEBACKGROUNDCHECKS = "COMPLETE_BACKGROUND_CHECKS"; +export const TaskTypeCOMPLETEBACKGROUNDCHECKS = /*@__PURE__*/ S.String; + +/** If the task is disabled, the reason and date when it was disabled. */ +export type CompleteBackgroundChecksTaskSummaryDisabled = + CompleteTrainingsTaskSummaryDisabled; +export const CompleteBackgroundChecksTaskSummaryDisabled = + CompleteTrainingsTaskSummaryDisabled; + +/** Task summary for completing background checks. */ +export interface CompleteBackgroundChecksTaskSummary { + taskType: TaskTypeCOMPLETEBACKGROUNDCHECKS; + status: TaskStatus; + /** The due date of the task. */ + dueDate: string | null; + /** The date the task was completed. */ + completionDate: string | null; + /** If the task is disabled, the reason and date when it was disabled. */ + disabled: CompleteTrainingsTaskSummaryDisabled | null; +} +export const CompleteBackgroundChecksTaskSummary = /*@__PURE__*/ S.suspend(() => + S.Struct({ + taskType: TaskTypeCOMPLETEBACKGROUNDCHECKS, + status: TaskStatus, + dueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + disabled: S.NullOr(CompleteTrainingsTaskSummaryDisabled), + }), +).annotate({ + identifier: "CompleteBackgroundChecksTaskSummary", +}) as any as S.Schema; + +/** All detailed information about a person's tasks, split across task categories. */ +export interface TaskSummaryDetails { + completeTrainings: CompleteTrainingsTaskSummary; + acceptPolicies: AcceptPoliciesTaskSummary; + completeCustomTasks: CompleteCustomTasksTaskSummary; + completeOffboardingCustomTasks: CompleteOffboardingCustomTasksTaskSummary; + installDeviceMonitoring: InstallDeviceMonitoringTaskSummary; + completeBackgroundChecks: CompleteBackgroundChecksTaskSummary; +} +export const TaskSummaryDetails = /*@__PURE__*/ S.suspend(() => + S.Struct({ + completeTrainings: CompleteTrainingsTaskSummary, + acceptPolicies: AcceptPoliciesTaskSummary, + completeCustomTasks: CompleteCustomTasksTaskSummary, + completeOffboardingCustomTasks: CompleteOffboardingCustomTasksTaskSummary, + installDeviceMonitoring: InstallDeviceMonitoringTaskSummary, + completeBackgroundChecks: CompleteBackgroundChecksTaskSummary, + }), +).annotate({ + identifier: "TaskSummaryDetails", +}) as any as S.Schema; + +/** The overall status of a person's outstanding tasks: - NONE: There are no tasks. - DUE_SOON: At least one task is due soon. - OVERDUE: At least one task is overdue. Has a higher priority than DUE_SOON. - COMPLETE: All tasks are complete. - PAUSED: All tasks are paused. - OFFBOARDING_DUE_SOON: At least one offboarding task is due soon. - OFFBOARDING_OVERDUE: At least one offboarding task is overdue. Has a higher priority than OFFBOARDING_DUE_SOON. - OFFBOARDING_COMPLETE: All offboarding tasks are complete. */ +export type TasksSummaryStatus = + | "COMPLETE" + | "DUE_SOON" + | "NONE" + | "OFFBOARDING_COMPLETE" + | "OFFBOARDING_DUE_SOON" + | "OFFBOARDING_OVERDUE" + | "OVERDUE" + | "PAUSED"; +export const TasksSummaryStatus = /*@__PURE__*/ S.String; + +/** The person's tasks summary, which aggregates their current status across all of their relevant tasks. */ +export interface PersonTasksSummary { + details: TaskSummaryDetails; + /** The status of the person's tasks summary. */ + status: TasksSummaryStatus; + /** The due date of the person's earliest-due task. */ + dueDate: string | null; + /** The date when person's tasks were completed. */ + completionDate: string | null; +} +export const PersonTasksSummary = /*@__PURE__*/ S.suspend(() => + S.Struct({ + details: TaskSummaryDetails, + status: TasksSummaryStatus, + dueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + }), +).annotate({ + identifier: "PersonTasksSummary", +}) as any as S.Schema; + +export interface Person { + id: string; + /** The ID of the Vanta user account associated with this person, if one exists. */ + userId: string | null; + emailAddress: string; + employment: PersonEmployment; + /** If present, the user's active/upcoming leave. Empty if the user has no active/upcoming leave. */ + leaveInfo: LeaveInfo | null; + /** The id of each group the user belongs to. This includes both manually created groups in Vanta and groups imported from an identity provider. */ + groupIds: PersonGroupIdsList; + name: PersonName; + /** The sources of the person's information. */ + sources: PersonSources; + /** The person's tasks summary, which aggregates their current status across all of their relevant tasks. */ + tasksSummary: PersonTasksSummary; +} +export const Person = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + userId: S.NullOr(S.String), + emailAddress: S.String, + employment: PersonEmployment, + leaveInfo: S.NullOr(LeaveInfo), + groupIds: PersonGroupIdsList, + name: PersonName, + sources: PersonSources, + tasksSummary: PersonTasksSummary, + }), +).annotate({ identifier: "Person" }) as any as S.Schema; + +export type CustomerTrustProductContextIdWritable = + | "EXTERNAL_TRUST_CENTER" + | "DOCUMENT_SHARING" + | "CONTROL_SHARING"; +export const CustomerTrustProductContextIdWritable = /*@__PURE__*/ S.String; + +export interface AddTagCategoryProductContextRequest { + tagCategoryId: string; + /** Product context to enable this tag category for. */ + productContextId: CustomerTrustProductContextIdWritable | (string & {}); +} +export const AddTagCategoryProductContextRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + tagCategoryId: S.String.pipe(T.Label()), + productContextId: CustomerTrustProductContextIdWritable, + }).pipe( + T.Http({ + method: "POST", + uri: "/customer-trust/tag-categories/{tagCategoryId}/product-contexts", + code: 200, + }), + ), +).annotate({ + identifier: "AddTagCategoryProductContextRequest", +}) as any as S.Schema; + +export interface AddTagCategoryProductContextResponse {} +export const AddTagCategoryProductContextResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "AddTagCategoryProductContextResponse", +}) as any as S.Schema; + +export interface AddTestToControlRequest { + controlId: string; + /** The ID of the test to add to the control. */ + testId: string; +} +export const AddTestToControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String.pipe(T.Label()), + testId: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/controls/{controlId}/add-test-to-control", + code: 200, + }), + ), +).annotate({ + identifier: "AddTestToControlRequest", +}) as any as S.Schema; + +/** The test's version. */ +export interface TestVersion { + /** The minor version number. */ + minor: number; + /** The major version number. */ + major: number; +} +export const TestVersion = /*@__PURE__*/ S.suspend(() => + S.Struct({ + minor: S.Number, + major: S.Number, + }), +).annotate({ identifier: "TestVersion" }) as any as S.Schema; + +/** This test's third-party integration dependencies. */ +export type TestIntegrationsList = Array; +export const TestIntegrationsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type TestStatus = + | "OK" + | "DEACTIVATED" + | "NEEDS_ATTENTION" + | "IN_PROGRESS" + | "INVALID" + | "NOT_APPLICABLE"; +export const TestStatus = /*@__PURE__*/ S.String; + +export interface DeactivatedStatusInfo { + /** The deactivated status of the test. */ + isDeactivated: boolean; + /** The reason for deactivation. */ + deactivatedReason: string | null; + /** The date of the last update to the deactivated status. */ + lastUpdatedDate: string | null; +} +export const DeactivatedStatusInfo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + isDeactivated: S.Boolean, + deactivatedReason: S.NullOr(S.String), + lastUpdatedDate: S.NullOr(S.String), + }), +).annotate({ + identifier: "DeactivatedStatusInfo", +}) as any as S.Schema; + +/** Enum for the possible test remediation statuses */ +export type TestRemediationStatus = + | "DISABLED" + | "DUE_SOON" + | "INVALID" + | "IN_PROGRESS" + | "NA" + | "NEEDS_WORK" + | "OVERDUE" + | "PASS"; +export const TestRemediationStatus = /*@__PURE__*/ S.String; + +export interface RemediationStatusInfo { + /** The status of the remediation. */ + status: TestRemediationStatus; + /** The soonest date by which the remediation should be completed. */ + soonestRemediateByDate: string | null; + /** The number of items that need remediation. */ + itemCount: number; +} +export const RemediationStatusInfo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + status: TestRemediationStatus, + soonestRemediateByDate: S.NullOr(S.String), + itemCount: S.Number, + }), +).annotate({ + identifier: "RemediationStatusInfo", +}) as any as S.Schema; + +export interface Test { + /** The test's unique ID. */ + id: string; + /** The test's name. */ + name: string; + /** The timestamp of the last test run. */ + lastTestRunDate: string; + /** The most recent date when the test flipped. */ + latestFlipDate: string | null; + /** The test's description. */ + description: string; + /** The test's failure description. */ + failureDescription: string; + /** The test's remediation description. */ + remediationDescription: string; + /** The test's version. */ + version: TestVersion; + /** The test's category. */ + category: DocumentAndTestCategory; + /** This test's third-party integration dependencies. */ + integrations: TestIntegrationsList; + /** This test run's status. */ + status: TestStatus; + /** The test's deactivation status. */ + deactivatedStatusInfo: DeactivatedStatusInfo; + /** The test's remediation status. */ + remediationStatusInfo: RemediationStatusInfo; + /** The test's owner. */ + owner: Owner | null; +} +export const Test = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + lastTestRunDate: S.String, + latestFlipDate: S.NullOr(S.String), + description: S.String, + failureDescription: S.String, + remediationDescription: S.String, + version: TestVersion, + category: DocumentAndTestCategory, + integrations: TestIntegrationsList, + status: TestStatus, + deactivatedStatusInfo: DeactivatedStatusInfo, + remediationStatusInfo: RemediationStatusInfo, + owner: S.NullOr(Owner), + }), +).annotate({ identifier: "Test" }) as any as S.Schema; + +export interface AddTestToControlResponse { + test: Test; + control: Control; +} +export const AddTestToControlResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + test: Test, + control: Control, + }), +).annotate({ + identifier: "AddTestToControlResponse", +}) as any as S.Schema; + +export interface AddTrustCenterControlCategoryRequest { + slugId: string; + /** Name of the category. */ + name: string; +} +export const AddTrustCenterControlCategoryRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + name: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/control-categories", + code: 200, + }), + ), +).annotate({ + identifier: "AddTrustCenterControlCategoryRequest", +}) as any as S.Schema; + +export interface AddTrustCenterFaqCategoryRequest { + slugId: string; + /** Name of the category. */ + name: string; +} +export const AddTrustCenterFaqCategoryRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + name: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/faq-categories", + code: 200, + }), + ), +).annotate({ + identifier: "AddTrustCenterFaqCategoryRequest", +}) as any as S.Schema; + +export interface TrustCenterFaqCategory { + /** Unique identifier for the FAQ category. */ + id: string; + /** Name of the category. */ + name: string; +} +export const TrustCenterFaqCategory = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + }), +).annotate({ + identifier: "TrustCenterFaqCategory", +}) as any as S.Schema; + +export interface AddTrustCenterResourceCategoryRequest { + slugId: string; + /** Name of the category. */ + name: string; +} +export const AddTrustCenterResourceCategoryRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + name: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/resource-categories", + code: 200, + }), + ), +).annotate({ + identifier: "AddTrustCenterResourceCategoryRequest", +}) as any as S.Schema; + +export interface TrustCenterResourceCategory { + /** Unique identifier for the resource category. */ + id: string; + /** Name of the category. */ + name: string; +} +export const TrustCenterResourceCategory = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + }), +).annotate({ + identifier: "TrustCenterResourceCategory", +}) as any as S.Schema; + +/** Identifiers for the resources that this viewer should have access to. If this field is omitted, the viewer will have access to all resources on the Trust Center. */ +export type AddTrustCenterViewerRequestResourceIdsList = Array; +export const AddTrustCenterViewerRequestResourceIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** The access level of the viewer. FULL_ACCESS means having access to all resources on the trust center. PARTIAL_ACCESS means having access to all public resources and a select list of requestable resources. */ +export type ViewerAccessLevel = "FULL_ACCESS" | "PARTIAL_ACCESS"; +export const ViewerAccessLevel = /*@__PURE__*/ S.String; + +export interface AddTrustCenterViewerRequest { + slugId: string; + /** Email of the viewer. */ + email: string; + /** Name of the viewer. */ + name: string; + /** Name of the viewer's company. */ + companyName: string; + /** Whether to require an NDA for the viewer. */ + isNdaRequired: boolean; + /** The date access should expire for this viewer. If a date isn't provided, access will not expire. */ + expirationDate?: string; + /** Identifiers for the resources that this viewer should have access to. If this field is omitted, the viewer will have access to all resources on the Trust Center. */ + resourceIds?: AddTrustCenterViewerRequestResourceIdsList; + /** Access level for the viewer. */ + accessLevel: ViewerAccessLevel | (string & {}); + /** ID of a Customer Trust Account to associate with this viewer. */ + customerTrustAccountId?: string; +} +export const AddTrustCenterViewerRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + email: S.String, + name: S.String, + companyName: S.String, + isNdaRequired: S.Boolean, + expirationDate: S.optional(S.String), + resourceIds: S.optional(AddTrustCenterViewerRequestResourceIdsList), + accessLevel: ViewerAccessLevel, + customerTrustAccountId: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/viewers", + code: 200, + }), + ), +).annotate({ + identifier: "AddTrustCenterViewerRequest", +}) as any as S.Schema; + +/** IDs for the resources this viewer has access to. If null, the viewer has access to all resources on the Trust Center. */ +export type TrustCenterViewerResourceIdsList = Array; +export const TrustCenterViewerResourceIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Contains information about the DocuSign NDA if that is the NDA provider. */ +export interface TrustCenterViewerNdaInfoDocuSign { + /** ID of the created envelope in DocuSign. */ + envelopeId: string; + /** ID of the DocuSign account. */ + accountId: string; + /** eSignature API URL for the DocuSign account. */ + accountBaseUrl: string; +} +export const TrustCenterViewerNdaInfoDocuSign = /*@__PURE__*/ S.suspend(() => + S.Struct({ + envelopeId: S.String, + accountId: S.String, + accountBaseUrl: S.String, + }), +).annotate({ + identifier: "TrustCenterViewerNdaInfoDocuSign", +}) as any as S.Schema; + +/** Contains information about the click-wrap NDA if that is the NDA provider. */ +export interface TrustCenterViewerNdaInfoOneClick { + /** ID for the NDA document that was signed. */ + ndaUploadedDocumentId: string | null; + /** Name of the person who signed the NDA. */ + name: string; + /** The date the NDA document was signed. */ + date: string; +} +export const TrustCenterViewerNdaInfoOneClick = /*@__PURE__*/ S.suspend(() => + S.Struct({ + ndaUploadedDocumentId: S.NullOr(S.String), + name: S.String, + date: S.String, + }), +).annotate({ + identifier: "TrustCenterViewerNdaInfoOneClick", +}) as any as S.Schema; + +/** The provider for a viewer's NDA. This can also be a provider that bypassed the NDA requirement, e.g. SFDC. */ +export type ViewerNdaProvider = + | "DOCUSIGN" + | "ONE_CLICK" + | "SFDC_BYPASS" + | "HUBSPOT_BYPASS" + | "IRONCLAD_BYPASS"; +export const ViewerNdaProvider = /*@__PURE__*/ S.String; + +/** NDA-related information for the viewer. */ +export interface TrustCenterViewerNdaInfo { + /** Contains information about the DocuSign NDA if that is the NDA provider. */ + docuSign: TrustCenterViewerNdaInfoDocuSign | null; + /** Contains information about the click-wrap NDA if that is the NDA provider. */ + oneClick: TrustCenterViewerNdaInfoOneClick | null; + /** The provider for the viewer's NDA. */ + provider: ViewerNdaProvider; + /** The date the NDA was satisfied. */ + satisfiedDate: string | null; +} +export const TrustCenterViewerNdaInfo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + docuSign: S.NullOr(TrustCenterViewerNdaInfoDocuSign), + oneClick: S.NullOr(TrustCenterViewerNdaInfoOneClick), + provider: ViewerNdaProvider, + satisfiedDate: S.NullOr(S.String), + }), +).annotate({ + identifier: "TrustCenterViewerNdaInfo", +}) as any as S.Schema; + +/** An external service that a Trust Center viewer may be associated with. */ +export type ExternalService = "SALESFORCE" | "HUBSPOT" | "IRONCLAD"; +export const ExternalService = /*@__PURE__*/ S.String; + +export interface TrustCenterViewerExternalServiceAssociationsItem { + /** The type of object in the external service the viewer was linked to. */ + objectType: string; + /** The ID of the user in the external service. */ + id: string; + /** The external service for the associated user. */ + service: ExternalService; +} +export const TrustCenterViewerExternalServiceAssociationsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + objectType: S.String, + id: S.String, + service: ExternalService, + }), + ).annotate({ + identifier: "TrustCenterViewerExternalServiceAssociationsItem", + }) as any as S.Schema; + +/** Objects in external services that the viewer is associated with. */ +export type TrustCenterViewerExternalServiceAssociationsList = + Array; +export const TrustCenterViewerExternalServiceAssociationsList = + /*@__PURE__*/ S.Array( + TrustCenterViewerExternalServiceAssociationsItem, + ) as any as S.Schema; + +export interface CustomerTrustUser { + id: string; + organizationId: string; + email: string; + givenName: string | null; + familyName: string | null; +} +export const CustomerTrustUser = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + organizationId: S.String, + email: S.String, + givenName: S.NullOr(S.String), + familyName: S.NullOr(S.String), + }), +).annotate({ + identifier: "CustomerTrustUser", +}) as any as S.Schema; + +export interface TrustCenterViewer { + /** Unique identifier for the viewer. */ + id: string; + /** Email of the viewer. */ + email: string; + /** Name of the viewer. */ + name: string | null; + /** Name of the viewer's company. */ + companyName: string | null; + /** IDs for the resources this viewer has access to. If null, the viewer has access to all resources on the Trust Center. */ + resourceIds: TrustCenterViewerResourceIdsList | null; + /** Access level of the viewer. */ + accessLevel: ViewerAccessLevel; + /** NDA-related information for the viewer. */ + ndaInfo: TrustCenterViewerNdaInfo | null; + /** Objects in external services that the viewer is associated with. */ + externalServiceAssociations: TrustCenterViewerExternalServiceAssociationsList | null; + /** Date the viewer was created. */ + creationDate: string; + /** Date the viewer was last updated. */ + updatedDate: string; + /** Expiration date for the viewer's access. */ + expirationDate: string | null; + /** User that shared the Trust Center with this viewer. */ + addedByUser: CustomerTrustUser | null; + /** ID of the Customer Trust Account associated with this viewer. */ + customerTrustAccountId: string | null; +} +export const TrustCenterViewer = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + email: S.String, + name: S.NullOr(S.String), + companyName: S.NullOr(S.String), + resourceIds: S.NullOr(TrustCenterViewerResourceIdsList), + accessLevel: ViewerAccessLevel, + ndaInfo: S.NullOr(TrustCenterViewerNdaInfo), + externalServiceAssociations: S.NullOr( + TrustCenterViewerExternalServiceAssociationsList, + ), + creationDate: S.String, + updatedDate: S.String, + expirationDate: S.NullOr(S.String), + addedByUser: S.NullOr(CustomerTrustUser), + customerTrustAccountId: S.NullOr(S.String), + }), +).annotate({ + identifier: "TrustCenterViewer", +}) as any as S.Schema; + +export interface ApproveQuestionnaireRequest { + questionnaireId: string; + /** Optional message describing the reason for approval. */ + statusChangeMessage?: string; +} +export const ApproveQuestionnaireRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaireId: S.String.pipe(T.Label()), + statusChangeMessage: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/customer-trust/questionnaires/{questionnaireId}/approve", + code: 200, + }), + ), +).annotate({ + identifier: "ApproveQuestionnaireRequest", +}) as any as S.Schema; + +export type CustomerTrustQuestionnaireType = + | "SPREADSHEET" + | "WEBSITE" + | "DOCUMENT"; +export const CustomerTrustQuestionnaireType = /*@__PURE__*/ S.String; + +export type QuestionnaireStatus = + | "APPROVED" + | "IN_PROGRESS" + | "IN_REVIEW" + | "READY_FOR_REVIEW" + | "WAITING_ON_ANSWERS" + | "ON_HOLD" + | "NO_LONGER_NEEDED" + | "COMPLETE" + | "ERROR" + | "EXTRACTING_QUESTIONS" + | "EXTRACTING_SECTIONS" + | "MAPPING_SECTIONS" + | "GENERATING_ANSWERS" + | "QUEUED_FOR_EXTRACTION" + | "PROCESSING" + | "QUEUED_FOR_PROCESSING" + | "WAITING_ON_COLUMN_SELECTION" + | "WAITING_ON_COLUMN_APPROVAL" + | "QUEUED_FOR_COLUMN_DETECTION" + | "DETECTING_COLUMNS"; +export const QuestionnaireStatus = /*@__PURE__*/ S.String; + +export interface QuestionnaireUser { + id: string; + displayName: string | null; + email: string | null; +} +export const QuestionnaireUser = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.NullOr(S.String), + email: S.NullOr(S.String), + }), +).annotate({ + identifier: "QuestionnaireUser", +}) as any as S.Schema; + +export interface QuestionnaireStatusChangeEntry { + /** The user who made the status change */ + updatedBy: QuestionnaireUser; + /** The date and time when the status was changed */ + updatedAt: string; + /** The new status of the questionnaire */ + status: QuestionnaireStatus; + /** An optional message associated with the status change */ + message: string | null; +} +export const QuestionnaireStatusChangeEntry = /*@__PURE__*/ S.suspend(() => + S.Struct({ + updatedBy: QuestionnaireUser, + updatedAt: S.String, + status: QuestionnaireStatus, + message: S.NullOr(S.String), + }), +).annotate({ + identifier: "QuestionnaireStatusChangeEntry", +}) as any as S.Schema; + +/** The status change history log for the questionnaire. Entries are ordered by the most recent status change first. */ +export type CustomerTrustQuestionnaireStatusLogList = + Array; +export const CustomerTrustQuestionnaireStatusLogList = /*@__PURE__*/ S.Array( + QuestionnaireStatusChangeEntry, +) as any as S.Schema; + +export type ActorAssignmentType = "User" | "Team"; +export const ActorAssignmentType = /*@__PURE__*/ S.String; + +export interface ActorAssignment { + type: ActorAssignmentType; + id: string; + displayName: string | null; +} +export const ActorAssignment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: ActorAssignmentType, + id: S.String, + displayName: S.NullOr(S.String), + }), +).annotate({ + identifier: "ActorAssignment", +}) as any as S.Schema; + +export interface CustomerTrustQuestionnaireMetadataItem { + value: string; + key: string; +} +export const CustomerTrustQuestionnaireMetadataItem = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + value: S.String, + key: S.String, + }), +).annotate({ + identifier: "CustomerTrustQuestionnaireMetadataItem", +}) as any as S.Schema; + +export type CustomerTrustQuestionnaireMetadataList = + Array; +export const CustomerTrustQuestionnaireMetadataList = /*@__PURE__*/ S.Array( + CustomerTrustQuestionnaireMetadataItem, +) as any as S.Schema; + +export interface TagInput { + categoryId: string; + tagId: string; +} +export const TagInput = /*@__PURE__*/ S.suspend(() => + S.Struct({ + categoryId: S.String, + tagId: S.String, + }), +).annotate({ identifier: "TagInput" }) as any as S.Schema; + +/** Tags assigned to this questionnaire. Each entry contains a categoryId and tagId. */ +export type CustomerTrustQuestionnaireTagAndCategoryIdsList = Array; +export const CustomerTrustQuestionnaireTagAndCategoryIdsList = + /*@__PURE__*/ S.Array( + TagInput, + ) as any as S.Schema; + +export interface CustomerTrustQuestionnaire { + id: string; + displayName: string; + url?: string; + type: CustomerTrustQuestionnaireType; + status: QuestionnaireStatus; + /** The status change history log for the questionnaire. Entries are ordered by the most recent status change first. */ + statusLog: CustomerTrustQuestionnaireStatusLogList; + /** The owner assignment in actor form (User or Team). */ + ownerAssignment?: ActorAssignment; + /** The approver assignment in actor form (User or Team). */ + approverAssignment?: ActorAssignment; + customerTrustAccountId?: string; + dueDate?: string; + metadata?: CustomerTrustQuestionnaireMetadataList; + /** Tags assigned to this questionnaire. Each entry contains a categoryId and tagId. */ + tagAndCategoryIds: CustomerTrustQuestionnaireTagAndCategoryIdsList; + createdDate: string; + updatedDate: string; + completedDate?: string; +} +export const CustomerTrustQuestionnaire = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.String, + url: S.optional(S.String), + type: CustomerTrustQuestionnaireType, + status: QuestionnaireStatus, + statusLog: CustomerTrustQuestionnaireStatusLogList, + ownerAssignment: S.optional(ActorAssignment), + approverAssignment: S.optional(ActorAssignment), + customerTrustAccountId: S.optional(S.String), + dueDate: S.optional(S.String), + metadata: S.optional(CustomerTrustQuestionnaireMetadataList), + tagAndCategoryIds: CustomerTrustQuestionnaireTagAndCategoryIdsList, + createdDate: S.String, + updatedDate: S.String, + completedDate: S.optional(S.String), + }), +).annotate({ + identifier: "CustomerTrustQuestionnaire", +}) as any as S.Schema; + +/** Identifiers for the resources that this viewer should have access to. If this field is omitted, the viewer will have access to all resources that they requested. */ +export type ApproveTrustCenterAccessRequestRequestResourceIdsList = + Array; +export const ApproveTrustCenterAccessRequestRequestResourceIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface ApproveTrustCenterAccessRequestRequest { + slugId: string; + accessRequestId: string; + /** The date access should expire for this viewer. If a date isn't provided, access will not expire. */ + expirationDate?: string; + /** Whether to require an NDA for the viewer. Defaults to true. */ + isNdaRequired?: boolean; + /** Identifiers for the resources that this viewer should have access to. If this field is omitted, the viewer will have access to all resources that they requested. */ + resourceIds?: ApproveTrustCenterAccessRequestRequestResourceIdsList; + /** Approved access level of the viewer. If this field is omitted, the viewer will have the access level they requested. */ + accessLevel?: ViewerAccessLevel | (string & {}); +} +export const ApproveTrustCenterAccessRequestRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + accessRequestId: S.String.pipe(T.Label()), + expirationDate: S.optional(S.String), + isNdaRequired: S.optional(S.Boolean), + resourceIds: S.optional( + ApproveTrustCenterAccessRequestRequestResourceIdsList, + ), + accessLevel: S.optional(ViewerAccessLevel), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/access-requests/{accessRequestId}/approve", + code: 200, + }), + ), +).annotate({ + identifier: "ApproveTrustCenterAccessRequestRequest", +}) as any as S.Schema; + +export interface ApproveTrustCenterAccessRequestResponse {} +export const ApproveTrustCenterAccessRequestResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "ApproveTrustCenterAccessRequestResponse", +}) as any as S.Schema; + +/** IDs of the controls to tag. Maximum 100. */ +export type BulkAddTagsToControlsRequestControlIdsList = Array; +export const BulkAddTagsToControlsRequestControlIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** IDs of the tags to add or remove. */ +export type BulkAddTagsToControlsRequestTagsList = Array; +export const BulkAddTagsToControlsRequestTagsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface BulkAddTagsToControlsRequest { + slugId: string; + /** IDs of the controls to tag. Maximum 100. */ + controlIds: BulkAddTagsToControlsRequestControlIdsList; + /** ID of the tag category. */ + tagCategory: string; + /** IDs of the tags to add or remove. */ + tags: BulkAddTagsToControlsRequestTagsList; +} +export const BulkAddTagsToControlsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + controlIds: BulkAddTagsToControlsRequestControlIdsList, + tagCategory: S.String, + tags: BulkAddTagsToControlsRequestTagsList, + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/controls/tags", + code: 200, + }), + ), +).annotate({ + identifier: "BulkAddTagsToControlsRequest", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterControlResultsList = + Array; +export const ArrayResponseTrustCenterControlResultsList = /*@__PURE__*/ S.Array( + TrustCenterControl, +) as any as S.Schema; + +export interface ArrayResponseTrustCenterControl { + results: ArrayResponseTrustCenterControlResultsList; +} +export const ArrayResponseTrustCenterControl = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: ArrayResponseTrustCenterControlResultsList, + }), +).annotate({ + identifier: "ArrayResponseTrustCenterControl", +}) as any as S.Schema; + +/** IDs of the controls to tag. Maximum 100. */ +export type BulkRemoveTagsFromControlsRequestControlIdsList = Array; +export const BulkRemoveTagsFromControlsRequestControlIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** IDs of the tags to add or remove. */ +export type BulkRemoveTagsFromControlsRequestTagsList = Array; +export const BulkRemoveTagsFromControlsRequestTagsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface BulkRemoveTagsFromControlsRequest { + slugId: string; + /** IDs of the controls to tag. Maximum 100. */ + controlIds: BulkRemoveTagsFromControlsRequestControlIdsList; + /** ID of the tag category. */ + tagCategory: string; + /** IDs of the tags to add or remove. */ + tags: BulkRemoveTagsFromControlsRequestTagsList; +} +export const BulkRemoveTagsFromControlsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + controlIds: BulkRemoveTagsFromControlsRequestControlIdsList, + tagCategory: S.String, + tags: BulkRemoveTagsFromControlsRequestTagsList, + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/controls/tags", + code: 200, + }), + ), +).annotate({ + identifier: "BulkRemoveTagsFromControlsRequest", +}) as any as S.Schema; + +export interface CancelRiskScenarioApprovalRequestRequest { + riskScenarioId: string; +} +export const CancelRiskScenarioApprovalRequestRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + riskScenarioId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "POST", + uri: "/risk-scenarios/{riskScenarioId}/cancel-approval-request", + code: 200, + }), + ), +).annotate({ + identifier: "CancelRiskScenarioApprovalRequestRequest", +}) as any as S.Schema; + +/** The list of categories this risk scenario belongs to. */ +export type RiskScenarioCategoriesList = Array; +export const RiskScenarioCategoriesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type CIA = "Confidentiality" | "Integrity" | "Availability"; +export const CIA = /*@__PURE__*/ S.String; + +/** A list of the following for the type of risk documented: - Confidentiality: Risk to data stores, customer/sensitive information, etc. - Integrity: Risk to accuracy or integrity of system settings and/or data - Availability: Risk to normal service operations and critical system functionality */ +export type RiskScenarioCiaCategoriesList = Array; +export const RiskScenarioCiaCategoriesList = /*@__PURE__*/ S.Array( + CIA, +) as any as S.Schema; + +export type Treatment = "Mitigate" | "Transfer" | "Avoid" | "Accept"; +export const Treatment = /*@__PURE__*/ S.String; + +export type CustomAttributeValueCase1List = Array; +export const CustomAttributeValueCase1List = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type CustomAttributeValue = string | CustomAttributeValueCase1List; +export const CustomAttributeValue = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export interface CustomAttribute { + label: string; + value: CustomAttributeValue; +} +export const CustomAttribute = /*@__PURE__*/ S.suspend(() => + S.Struct({ + label: S.String, + value: CustomAttributeValue, + }), +).annotate({ + identifier: "CustomAttribute", +}) as any as S.Schema; + +/** The list of custom fields. You can reference existing custom fields in the Risk Management settings and/or create new ones. The format is: - {label: "field-name", value: "string-representation"} for text, date, number and currency fields - {label: "field-name", value: ["option1", "option2"]} for picklist fields */ +export type RiskScenarioCustomFieldsList = Array; +export const RiskScenarioCustomFieldsList = /*@__PURE__*/ S.Array( + CustomAttribute, +) as any as S.Schema; + +export type ReviewStatus = + | "APPROVED" + | "DRAFT" + | "NOT_REVIEWED" + | "AWAITING_SUBMISSION" + | "PENDING_APPROVAL" + | "REQUESTED_CHANGES"; +export const ReviewStatus = /*@__PURE__*/ S.String; + +/** The list of required approvers for this risk scenario. */ +export type RiskScenarioRequiredApproversList = Array; +export const RiskScenarioRequiredApproversList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type RiskScenarioType = "Risk Scenario" | "Enterprise Risk"; +export const RiskScenarioType = /*@__PURE__*/ S.String; + +export interface RiskScenario { + /** The unique ID of the risk specified by the user. Used to reference and update existing risks. */ + riskId: string; + /** This describes an actual or potential risk to your organization's people, processes, technology, data, and facilities. Document actual issues or likely scenarios based on your specific environment or a potential vulnerability. Naming note: in the UI, `description` is labelled "Title" and `detailedDescription` is labelled "Description". The field names are preserved for backwards compatibility with the public REST API and existing data. */ + description: string; + /** Optional long-form description providing extended context for the risk scenario. Maximum 10000 characters. Naming note: in the UI, `description` is labelled "Title" and `detailedDescription` is labelled "Description". The field names are preserved for backwards compatibility with the public REST API and existing data. */ + detailedDescription?: string | null; + /** If set to true this risk can only be seen by its owner or users with Admin, RiskSensitiveManage or RiskSensitiveView permissions. */ + isSensitive: boolean | null; + /** Represents the probability of an incident occurring due to this risk or vulnerability, expressed as a numerical score. Defaults to a range of 1-5, where higher values indicate greater likelihood. The range can be customized in the Risk Management settings. A value of `null` indicates that no score has been assigned. */ + likelihood: number | null; + /** Represents the potential severity of harm to your organization’s operations if this risk is exploited, expressed as a numerical score. Defaults to a range of 1-5, where higher values indicate greater impact. The range can be customized in the Risk Management settings. A value of `null` indicates that no score has been assigned. */ + impact: number | null; + /** Represents the adjusted probability of this risk being exploited or affecting operations after implementing risk treatments, such as controls or mitigations. Expressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings. A value of `null` indicates that no score has been assigned. */ + residualLikelihood: number | null; + /** Represents the adjusted severity of harm to your organization’s operations if this risk is exploited after implementing risk treatments, such as controls or mitigations. Expressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings. A value of `null` indicates that no score has been assigned. */ + residualImpact: number | null; + /** The list of categories this risk scenario belongs to. */ + categories: RiskScenarioCategoriesList; + /** A list of the following for the type of risk documented: - Confidentiality: Risk to data stores, customer/sensitive information, etc. - Integrity: Risk to accuracy or integrity of system settings and/or data - Availability: Risk to normal service operations and critical system functionality */ + ciaCategories: RiskScenarioCiaCategoriesList; + /** Indicate how your leadership team wants to address an identified risk. Please note: not all risks need to be addressed immediately (or at all). Your Risk Treatment decision will depend on multiple factors, such as your organization's risk tolerance and the value of the asset that the risk is associated with. The options are: - Mitigate: Identify controls to put in place or tasks to be done that will reduce the risk score. - Transfer: Move risk outside of your organization's set of responsibilities e.g. get cyber liability insurance. - Avoid: Stop doing the activity which is causing the risk to your organization and its assets. - Accept: Decide to live with the risk and take no further actions. - Accept: decide to live with the risk; this may be because it is highly unlikely, has a low financial or operational impact, or the cost and effort to treat the risk far exceeds the value of the asset */ + treatment: Treatment | null; + /** The email of the person responsible for tracking and mitigating this risk scenario. */ + owner: string | null; + /** Additional context about the risk scenario and why it has specific impact and likelihood scores. */ + note: string | null; + /** Name of the risk register associated with this scenario. */ + riskRegister: string | null; + /** The list of custom fields. You can reference existing custom fields in the Risk Management settings and/or create new ones. The format is: - {label: "field-name", value: "string-representation"} for text, date, number and currency fields - {label: "field-name", value: ["option1", "option2"]} for picklist fields */ + customFields: RiskScenarioCustomFieldsList; + /** Whether this scenario is archived. */ + isArchived: boolean; + /** The current review status of this risk scenario */ + reviewStatus: ReviewStatus; + /** The list of required approvers for this risk scenario. */ + requiredApprovers: RiskScenarioRequiredApproversList; + /** The type of risk scenario. - "Risk Scenario": Standard risk scenario - "Enterprise Risk": Enterprise-level risk */ + type: RiskScenarioType; + /** The date this risk was identified. Matches the "Identified Date" field in the Vanta UI. Set by the customer when a risk is created; defaults to the scenario's creation time when not explicitly provided. */ + identificationDate: string; +} +export const RiskScenario = /*@__PURE__*/ S.suspend(() => + S.Struct({ + riskId: S.String, + description: S.String, + detailedDescription: S.optional(S.NullOr(S.String)), + isSensitive: S.NullOr(S.Boolean), + likelihood: S.NullOr(S.Number), + impact: S.NullOr(S.Number), + residualLikelihood: S.NullOr(S.Number), + residualImpact: S.NullOr(S.Number), + categories: RiskScenarioCategoriesList, + ciaCategories: RiskScenarioCiaCategoriesList, + treatment: S.NullOr(Treatment), + owner: S.NullOr(S.String), + note: S.NullOr(S.String), + riskRegister: S.NullOr(S.String), + customFields: RiskScenarioCustomFieldsList, + isArchived: S.Boolean, + reviewStatus: ReviewStatus, + requiredApprovers: RiskScenarioRequiredApproversList, + type: RiskScenarioType, + identificationDate: S.String, + }), +).annotate({ identifier: "RiskScenario" }) as any as S.Schema; + +export interface ClearLeaveForPersonRequest { + personId: string; +} +export const ClearLeaveForPersonRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + personId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "POST", + uri: "/people/{personId}/clear-leave", + code: 200, + }), + ), +).annotate({ + identifier: "ClearLeaveForPersonRequest", +}) as any as S.Schema; + +export interface CompleteQuestionnaireRequest { + questionnaireId: string; + /** Whether to sync approved answers to the answer library. Defaults to true. Ignored for non-English SPREADSHEET/DOCUMENT questionnaires. */ + shouldSyncApprovedToAnswerLibrary?: boolean; +} +export const CompleteQuestionnaireRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaireId: S.String.pipe(T.Label()), + shouldSyncApprovedToAnswerLibrary: S.optional(S.Boolean), + }).pipe( + T.Http({ + method: "POST", + uri: "/customer-trust/questionnaires/{questionnaireId}/complete", + code: 200, + }), + ), +).annotate({ + identifier: "CompleteQuestionnaireRequest", +}) as any as S.Schema; + +/** The type of actor. Currently only "User" is supported. */ +export type AnswerLibraryActorAssignmentInputType = "User"; +export const AnswerLibraryActorAssignmentInputType = /*@__PURE__*/ S.String; + +export interface AnswerLibraryActorAssignmentInput { + /** The type of actor. Currently only "User" is supported. */ + type: AnswerLibraryActorAssignmentInputType | (string & {}); + /** The unique identifier of the user or team. */ + id: string; +} +export const AnswerLibraryActorAssignmentInput = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: AnswerLibraryActorAssignmentInputType, + id: S.String, + }), +).annotate({ + identifier: "AnswerLibraryActorAssignmentInput", +}) as any as S.Schema; + +/** Tags to associate with the entry. Discover valid `categoryId` and `tagId` values via `GET /v1/customer-trust/tag-categories` (to list categories) and `GET /v1/customer-trust/tag-categories/{tagCategoryId}` (to list tags within a category). */ +export type CreateAnswerLibraryEntryRequestTagsList = Array; +export const CreateAnswerLibraryEntryRequestTagsList = /*@__PURE__*/ S.Array( + TagInput, +) as any as S.Schema; + +export interface CreateAnswerLibraryEntryRequest { + /** The question text. */ + question: string; + /** The answer text. */ + answer: string; + /** The actor to assign as owner. Currently only type "User" is supported. */ + ownerAssignment?: AnswerLibraryActorAssignmentInput; + /** The expiration date in ISO 8601 format. */ + expirationDate?: string; + /** Tags to associate with the entry. Discover valid `categoryId` and `tagId` values via `GET /v1/customer-trust/tag-categories` (to list categories) and `GET /v1/customer-trust/tag-categories/{tagCategoryId}` (to list tags within a category). */ + tags?: CreateAnswerLibraryEntryRequestTagsList; +} +export const CreateAnswerLibraryEntryRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + question: S.String, + answer: S.String, + ownerAssignment: S.optional(AnswerLibraryActorAssignmentInput), + expirationDate: S.optional(S.String), + tags: S.optional(CreateAnswerLibraryEntryRequestTagsList), + }).pipe( + T.Http({ + method: "POST", + uri: "/knowledge-base/answer-library", + code: 200, + }), + ), +).annotate({ + identifier: "CreateAnswerLibraryEntryRequest", +}) as any as S.Schema; + +export type KnowledgeBaseAnswerLibraryEntryOutputExpirationStatus = + | "CURRENT" + | "EXPIRED"; +export const KnowledgeBaseAnswerLibraryEntryOutputExpirationStatus = + /*@__PURE__*/ S.String; + +export type AnswerLibraryActorAssignmentType = "User" | "Team"; +export const AnswerLibraryActorAssignmentType = /*@__PURE__*/ S.String; + +export interface AnswerLibraryActorAssignment { + type: AnswerLibraryActorAssignmentType; + id: string; + displayName: string | null; +} +export const AnswerLibraryActorAssignment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: AnswerLibraryActorAssignmentType, + id: S.String, + displayName: S.NullOr(S.String), + }), +).annotate({ + identifier: "AnswerLibraryActorAssignment", +}) as any as S.Schema; + +export type KnowledgeBaseAnswerLibraryEntryOutputTagsList = Array; +export const KnowledgeBaseAnswerLibraryEntryOutputTagsList = + /*@__PURE__*/ S.Array( + TagInput, + ) as any as S.Schema; + +export interface KnowledgeBaseAnswerLibraryEntryOutput { + id: string; + question: string; + answer: string; + expirationStatus: KnowledgeBaseAnswerLibraryEntryOutputExpirationStatus; + ownerAssignment: AnswerLibraryActorAssignment | null; + expirationDate: string | null; + lastUpdated: string; + lastVerified: string | null; + tags: KnowledgeBaseAnswerLibraryEntryOutputTagsList; +} +export const KnowledgeBaseAnswerLibraryEntryOutput = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String, + question: S.String, + answer: S.String, + expirationStatus: KnowledgeBaseAnswerLibraryEntryOutputExpirationStatus, + ownerAssignment: S.NullOr(AnswerLibraryActorAssignment), + expirationDate: S.NullOr(S.String), + lastUpdated: S.String, + lastVerified: S.NullOr(S.String), + tags: KnowledgeBaseAnswerLibraryEntryOutputTagsList, + }), +).annotate({ + identifier: "KnowledgeBaseAnswerLibraryEntryOutput", +}) as any as S.Schema; + +/** Compliance standard to associate with this framework. */ +export type CreateComplianceFrameworkRequestStandard = + | "aiact" + | "aiuc1" + | "aue8" + | "awsFTR" + | "bsic5" + | "ccpa" + | "cisv8" + | "cjis" + | "cmmc2" + | "cps234" + | "cri" + | "dora" + | "fedRAMPr5" + | "fedramp" + | "fedramp20x" + | "fedramp20x_2026" + | "gdpr" + | "hipaa" + | "hitruste1" + | "iso9001" + | "iso27001" + | "iso27001_2022" + | "iso27017" + | "iso27018" + | "iso27701" + | "iso27701_2025" + | "iso42001" + | "msftSSPA" + | "mvsp" + | "nis2d" + | "nist53" + | "nist171" + | "nist171r3" + | "nistAiRmf" + | "nistCSF" + | "nistcsf2" + | "ofdss" + | "pciDss4" + | "pciSaqA" + | "pciSaqAEP" + | "pciSaqDMerchant" + | "pciSaqDSP" + | "soc2" + | "soxITGC" + | "t23nycrr500" + | "tisax" + | "tisax2027" + | "iso22301" + | "trust" + | "ukCyberEssentials" + | "ukCyberEssentials33" + | "usDataPrivacy" + | "fedrampKSI"; +export const CreateComplianceFrameworkRequestStandard = /*@__PURE__*/ S.String; + +export interface CreateComplianceFrameworkRequest { + slugId: string; + /** Display name of the framework. */ + name: string; + /** Compliance standard to associate with this framework. */ + standard?: CreateComplianceFrameworkRequestStandard | (string & {}) | null; + /** Description of the framework. */ + description?: string; +} +export const CreateComplianceFrameworkRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + name: S.String, + standard: S.optional(S.NullOr(CreateComplianceFrameworkRequestStandard)), + description: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/compliance-frameworks", + code: 200, + }), + ), +).annotate({ + identifier: "CreateComplianceFrameworkRequest", +}) as any as S.Schema; + +export interface TrustCenterComplianceFramework { + /** Unique identifier for the framework. */ + id: string; + /** Display name of the framework. */ + name: string; + /** Compliance standard associated with this framework. */ + standard: string | null; + /** Description of the framework. */ + description: string | null; +} +export const TrustCenterComplianceFramework = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + standard: S.NullOr(S.String), + description: S.NullOr(S.String), + }), +).annotate({ + identifier: "TrustCenterComplianceFramework", +}) as any as S.Schema; + +export type ControlDomain = + | "ARTIFICIAL_&_AUTONOMOUS_TECHNOLOGY" + | "ASSET_MANAGEMENT" + | "BUSINESS_CONTINUITY_&_DISASTER_RECOVERY" + | "CAPACITY_&_PERFORMANCE_PLANNING" + | "CHANGE_MANAGEMENT" + | "CLOUD_SECURITY" + | "COMPLIANCE" + | "CONFIGURATION_MANAGEMENT" + | "CONTINUOUS_MONITORING" + | "CRYPTOGRAPHIC_PROTECTIONS" + | "DATA_CLASSIFICATION_&_HANDLING" + | "EMBEDDED_TECHNOLOGY" + | "ENDPOINT_SECURITY" + | "HUMAN_RESOURCES_SECURITY" + | "IDENTIFICATION_&_AUTHENTICATION" + | "INCIDENT_RESPONSE" + | "INFORMATION_ASSURANCE" + | "MAINTENANCE" + | "MOBILE_DEVICE_MANAGEMENT" + | "NETWORK SECURITY" + | "PHYSICAL_&_ENVIRONMENTAL_SECURITY" + | "PRIVACY" + | "PROJECT_&_RESOURCE MANAGEMENT" + | "RISK_MANAGEMENT" + | "SECURE_ENGINEERING_&_ARCHITECTURE" + | "SECURITY_AWARENESS_&_TRAINING" + | "SECURITY_OPERATIONS" + | "SECURITY_&_PRIVACY_GOVERNANCE" + | "TECHNOLOGY_DEVELOPMENT_&_ACQUISITION" + | "THIRD-PARTY_MANAGEMENT" + | "THREAT_MANAGEMENT" + | "VULNERABILITY_&_PATCH_MANAGEMENT" + | "WEB_SECURITY" + | "ADMINISTRATIVE" + | "PHYSICAL" + | "TECHNICAL" + | "BASIC" + | "DERIVED"; +export const ControlDomain = /*@__PURE__*/ S.String; + +export type FrameworkId = + | "AU_E_8" + | "AWS_FTR" + | "CCPA" + | "CIS_V8" + | "CPS_234" + | "DORA" + | "FEDRAMP" + | "GDPR" + | "HIPAA" + | "HITRUST_E1" + | "ISO_27001" + | "ISO_27001_2022" + | "ISO_27017" + | "ISO_27018" + | "ISO_27701" + | "ISO_42001" + | "ISO_9001" + | "MSFT_SSPA" + | "MVSP" + | "NIS_2D" + | "NIST_171" + | "NIST_171_R3" + | "NIST_53" + | "NIST_AI_RMF" + | "NIST_CSF" + | "NIST_CSF_2" + | "OFDSS" + | "PCI_SAQ_A" + | "PCI_SAQ_A_EP" + | "PCI_SAQ_D_MERCHANT" + | "PCI_SAQ_D_SP" + | "PCI_DDS_4" + | "SOC_2" + | "SOX_ITGC" + | "UK_CYBER_ESSENTIALS" + | "US_DATA_PRIVACY"; +export const FrameworkId = /*@__PURE__*/ S.String; + +export type FrameworkSectionFrameworkId = FrameworkId | string; +export const FrameworkSectionFrameworkId = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export interface FrameworkSection { + frameworkId: FrameworkSectionFrameworkId; + sectionId: string; +} +export const FrameworkSection = /*@__PURE__*/ S.suspend(() => + S.Struct({ + frameworkId: FrameworkSectionFrameworkId, + sectionId: S.String, + }), +).annotate({ + identifier: "FrameworkSection", +}) as any as S.Schema; + +/** The framework sections that the control maps to. */ +export type CreateCustomControlRequestSectionsList = Array; +export const CreateCustomControlRequestSectionsList = /*@__PURE__*/ S.Array( + FrameworkSection, +) as any as S.Schema; + +export type GdprRole = "BOTH" | "CONTROLLER" | "PROCESSOR"; +export const GdprRole = /*@__PURE__*/ S.String; + +/** The control's values for custom fields. */ +export type CreateCustomControlRequestCustomFieldsList = Array; +export const CreateCustomControlRequestCustomFieldsList = /*@__PURE__*/ S.Array( + CustomField, +) as any as S.Schema; + +export interface CreateCustomControlRequest { + /** The control's external ID. */ + externalId: string; + /** The control's name. */ + name: string | null; + /** The control's description. */ + description: string; + /** The effective date of the control. */ + effectiveDate: string; + /** The control's category. */ + domain: ControlDomain | (string & {}); + /** The framework sections that the control maps to. */ + sections?: CreateCustomControlRequestSectionsList | null; + /** The GDPR role of the control, which specifies whether the data is being "collected" or "processed". This field should only be included for controls that are to be mapped to the GDPR framework. */ + role?: GdprRole | (string & {}) | null; + /** The control's values for custom fields. */ + customFields?: CreateCustomControlRequestCustomFieldsList; +} +export const CreateCustomControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + externalId: S.String, + name: S.NullOr(S.String), + description: S.String, + effectiveDate: S.String, + domain: ControlDomain, + sections: S.optional(S.NullOr(CreateCustomControlRequestSectionsList)), + role: S.optional(S.NullOr(GdprRole)), + customFields: S.optional(CreateCustomControlRequestCustomFieldsList), + }).pipe(T.Http({ method: "POST", uri: "/controls", code: 200 })), +).annotate({ + identifier: "CreateCustomControlRequest", +}) as any as S.Schema; + +export interface CustomerTrustAccountNDADetailsInput { + /** Whether NDA requirement should be bypassed for access requests matching this account */ + markNdaNotRequired: boolean; +} +export const CustomerTrustAccountNDADetailsInput = /*@__PURE__*/ S.suspend(() => + S.Struct({ + markNdaNotRequired: S.Boolean, + }), +).annotate({ + identifier: "CustomerTrustAccountNDADetailsInput", +}) as any as S.Schema; + +/** How a CustomerTrustAccount determines which resources to grant its viewers access to. */ +export type CustomerTrustAccountGrantAccessOption = + | "INCLUDE_EVERYTHING_REQUESTED" + | "INCLUDE_ONLY_CONFIGURED"; +export const CustomerTrustAccountGrantAccessOption = /*@__PURE__*/ S.String; + +/** Tag IDs to assign. An empty array removes all tags for the category. */ +export type TagsByCategoryInputTagIdsList = Array; +export const TagsByCategoryInputTagIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface TagsByCategoryInput { + /** The tag category ID */ + categoryId: string; + /** Tag IDs to assign. An empty array removes all tags for the category. */ + tagIds: TagsByCategoryInputTagIdsList; +} +export const TagsByCategoryInput = /*@__PURE__*/ S.suspend(() => + S.Struct({ + categoryId: S.String, + tagIds: TagsByCategoryInputTagIdsList, + }), +).annotate({ + identifier: "TagsByCategoryInput", +}) as any as S.Schema; + +/** Tags to assign to this account, grouped by category. */ +export type CustomerTrustAccountAccessConfigInputTagsByCategoryList = + Array; +export const CustomerTrustAccountAccessConfigInputTagsByCategoryList = + /*@__PURE__*/ S.Array( + TagsByCategoryInput, + ) as any as S.Schema; + +export interface CustomerTrustAccountAccessConfigInput { + /** Whether access requests matching this account's email domain should be auto-approved */ + autoApprovalEnabled: boolean; + /** How to grant resource access for auto-approved requests. Must be specified if autoApprovalEnabled is true */ + grantAccessOption?: + | CustomerTrustAccountGrantAccessOption + | (string & {}) + | null; + /** Tags to assign to this account, grouped by category. */ + tagsByCategory?: CustomerTrustAccountAccessConfigInputTagsByCategoryList; +} +export const CustomerTrustAccountAccessConfigInput = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + autoApprovalEnabled: S.Boolean, + grantAccessOption: S.optional( + S.NullOr(CustomerTrustAccountGrantAccessOption), + ), + tagsByCategory: S.optional( + CustomerTrustAccountAccessConfigInputTagsByCategoryList, + ), + }), +).annotate({ + identifier: "CustomerTrustAccountAccessConfigInput", +}) as any as S.Schema; + +export type CreateCustomerTrustAccountRequestCustomFieldsList = + Array; +export const CreateCustomerTrustAccountRequestCustomFieldsList = + /*@__PURE__*/ S.Array( + CustomField, + ) as any as S.Schema; + +/** Tags to assign to this account, grouped by category */ +export type CreateCustomerTrustAccountRequestTagsByCategoryList = + Array; +export const CreateCustomerTrustAccountRequestTagsByCategoryList = + /*@__PURE__*/ S.Array( + TagsByCategoryInput, + ) as any as S.Schema; + +export interface CreateCustomerTrustAccountRequest { + name: string; + emailDomain: string; + ndaDetails?: CustomerTrustAccountNDADetailsInput; + accessConfig?: CustomerTrustAccountAccessConfigInput; + customFields?: CreateCustomerTrustAccountRequestCustomFieldsList; + /** Tags to assign to this account, grouped by category */ + tagsByCategory?: CreateCustomerTrustAccountRequestTagsByCategoryList; +} +export const CreateCustomerTrustAccountRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + emailDomain: S.String, + ndaDetails: S.optional(CustomerTrustAccountNDADetailsInput), + accessConfig: S.optional(CustomerTrustAccountAccessConfigInput), + customFields: S.optional(CreateCustomerTrustAccountRequestCustomFieldsList), + tagsByCategory: S.optional( + CreateCustomerTrustAccountRequestTagsByCategoryList, + ), + }).pipe( + T.Http({ method: "POST", uri: "/customer-trust/accounts", code: 200 }), + ), +).annotate({ + identifier: "CreateCustomerTrustAccountRequest", +}) as any as S.Schema; + +export type CustomerTrustAccountNdaStatus = + | "SIGNED" + | "NOT_REQUIRED" + | "INCOMPLETE"; +export const CustomerTrustAccountNdaStatus = /*@__PURE__*/ S.String; + +export interface CustomerTrustAccountNDADetails { + /** The status of the NDA for this account */ + ndaStatus: CustomerTrustAccountNdaStatus; + /** The date and time the NDA was satisfied */ + ndaSatisfiedDate: string | null; +} +export const CustomerTrustAccountNDADetails = /*@__PURE__*/ S.suspend(() => + S.Struct({ + ndaStatus: CustomerTrustAccountNdaStatus, + ndaSatisfiedDate: S.NullOr(S.String), + }), +).annotate({ + identifier: "CustomerTrustAccountNDADetails", +}) as any as S.Schema; + +export interface CustomerTrustAccountAccessConfig { + /** Whether access requests matching this account's email domain should be auto-approved */ + autoApprovalEnabled: boolean; + /** How to grant resource access for auto-approved requests */ + grantAccessOption: CustomerTrustAccountGrantAccessOption | null; +} +export const CustomerTrustAccountAccessConfig = /*@__PURE__*/ S.suspend(() => + S.Struct({ + autoApprovalEnabled: S.Boolean, + grantAccessOption: S.NullOr(CustomerTrustAccountGrantAccessOption), + }), +).annotate({ + identifier: "CustomerTrustAccountAccessConfig", +}) as any as S.Schema; + +/** Custom field values for this account */ +export type CustomerTrustAccountVantaApiCustomFieldsList = Array; +export const CustomerTrustAccountVantaApiCustomFieldsList = + /*@__PURE__*/ S.Array( + CustomField, + ) as any as S.Schema; + +/** Tag IDs assigned in this category */ +export type TagsByCategoryOutputTagIdsList = Array; +export const TagsByCategoryOutputTagIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface TagsByCategoryOutput { + /** The tag category ID */ + categoryId: string; + /** Tag IDs assigned in this category */ + tagIds: TagsByCategoryOutputTagIdsList; +} +export const TagsByCategoryOutput = /*@__PURE__*/ S.suspend(() => + S.Struct({ + categoryId: S.String, + tagIds: TagsByCategoryOutputTagIdsList, + }), +).annotate({ + identifier: "TagsByCategoryOutput", +}) as any as S.Schema; + +/** Tags assigned to this account, grouped by category */ +export type CustomerTrustAccountVantaApiTagsByCategoryList = + Array; +export const CustomerTrustAccountVantaApiTagsByCategoryList = + /*@__PURE__*/ S.Array( + TagsByCategoryOutput, + ) as any as S.Schema; + +/** Vanta API representation of a CustomerTrustAccount. */ +export interface CustomerTrustAccountVantaApi { + /** Unique identifier for the account */ + id: string; + /** Name of the account */ + name: string; + /** Primary email domain associated with the account */ + emailDomain: string; + /** When the account was created */ + createdDate: string; + /** When the account was last updated */ + updatedDate: string; + /** NDA configuration for this account */ + ndaDetails: CustomerTrustAccountNDADetails; + /** Access configuration for this account */ + accessConfig: CustomerTrustAccountAccessConfig | null; + /** Custom field values for this account */ + customFields: CustomerTrustAccountVantaApiCustomFieldsList; + /** Tags assigned to this account, grouped by category */ + tagsByCategory: CustomerTrustAccountVantaApiTagsByCategoryList; +} +export const CustomerTrustAccountVantaApi = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + emailDomain: S.String, + createdDate: S.String, + updatedDate: S.String, + ndaDetails: CustomerTrustAccountNDADetails, + accessConfig: S.NullOr(CustomerTrustAccountAccessConfig), + customFields: CustomerTrustAccountVantaApiCustomFieldsList, + tagsByCategory: CustomerTrustAccountVantaApiTagsByCategoryList, + }), +).annotate({ + identifier: "CustomerTrustAccountVantaApi", +}) as any as S.Schema; + +export interface CreateDeletionRequestRequest { + /** Email address of the individual requesting data deletion. */ + email: string; +} +export const CreateDeletionRequestRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + email: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/customer-trust/deletion-requests", + code: 200, + }), + ), +).annotate({ + identifier: "CreateDeletionRequestRequest", +}) as any as S.Schema; + +/** Response returned after a data deletion request is created. */ +export interface CreateDeletionRequestResponse { + /** Whether the deletion request was successfully enqueued. */ + isSuccessful: boolean; +} +export const CreateDeletionRequestResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + isSuccessful: S.Boolean, + }), +).annotate({ + identifier: "CreateDeletionRequestResponse", +}) as any as S.Schema; + +export type TimeSensitivity = "MOST_RECENT" | "DURING_AUDIT_WINDOW"; +export const TimeSensitivity = /*@__PURE__*/ S.String; + +export type RecurrenceDuration = + | "P0D" + | "P1D" + | "P1W" + | "P1M" + | "P3M" + | "P6M" + | "P1Y" + | "P2Y"; +export const RecurrenceDuration = /*@__PURE__*/ S.String; + +export type ReminderWindow = "P0D" | "P1D" | "P1W" | "P1M" | "P3M"; +export const ReminderWindow = /*@__PURE__*/ S.String; + +export interface CreateDocumentRequest { + /** The document's title. */ + title: string; + /** The document's description. */ + description: string; + /** When to upload the document. Must be one of: "Most recent", "During audit window" */ + timeSensitivity: TimeSensitivity | (string & {}); + /** How often the document needs to be renewed. Never: P0D - The document does not need to be renewed. Daily: P1D - The document needs to be renewed daily. Weekly: P1W - The document needs to be renewed weekly. Monthly: P1M - The document needs to be renewed monthly. Quarterly: P3M - The document needs to be renewed quarterly. Biannually: P6M - The document needs to be renewed biannually. Annually: P1Y - The document needs to be renewed annually. */ + cadence: RecurrenceDuration | (string & {}); + /** The number of days before the renewal date to send a reminder. Note that reminderWindow should be smaller than the cadence. Options are: Never: P0D - No reminder will be sent. Day: P1D - A reminder will be sent one day before the renewal date. Week: P1W - A reminder will be sent one week before the renewal date. Month: P1M - A reminder will be sent one month before the renewal date. Quarter: P3M - A reminder will be sent one quarter before the renewal date. */ + reminderWindow: ReminderWindow | (string & {}); + /** Determines whether or not the document is sensitive. This restricts which users can access or upload files to the document. Only admins are able to view or upload sensitive documents. */ + isSensitive: boolean; +} +export const CreateDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + title: S.String, + description: S.String, + timeSensitivity: TimeSensitivity, + cadence: RecurrenceDuration, + reminderWindow: ReminderWindow, + isSensitive: S.Boolean, + }).pipe(T.Http({ method: "POST", uri: "/documents", code: 200 })), +).annotate({ + identifier: "CreateDocumentRequest", +}) as any as S.Schema; + +export interface CreateDocumentResourceRequest { + file: string; + /** Title of the document resource. */ + title: string; + /** Description of the document resource. */ + description?: string; + /** Owner to assign as a JSON string: {"type":"User","id":""}. */ + ownerAssignment?: string; + /** Customer visibility on the Trust Center: PRIVATE | SHAREABLE | REQUEST_ACCESS | PUBLIC. */ + customerVisibility?: string; + /** Trust Center download permission: VIEW_ONLY | VIEW_AND_DOWNLOAD. */ + downloadPermission?: string; + /** Whether to use this resource for Questionnaire Automation answer generation ("true" / "false"). */ + isUsedInQuestionnaires?: string; + /** Expiration date in ISO 8601. */ + expirationDate?: string; + /** Tags as a JSON array: [{"categoryId":"","tagId":""}]. */ + tags?: string; + /** Trust Center category id to associate this resource with. Only applied when `customerVisibility` is `REQUEST_ACCESS` or `PUBLIC`; other visibilities don't place the resource on the Trust Center, so the category is ignored. Pass an unknown id to fall back to uncategorized. */ + categoryId?: string; +} +export const CreateDocumentResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + file: S.String, + title: S.String, + description: S.optional(S.String), + ownerAssignment: S.optional(S.String), + customerVisibility: S.optional(S.String), + downloadPermission: S.optional(S.String), + isUsedInQuestionnaires: S.optional(S.String), + expirationDate: S.optional(S.String), + tags: S.optional(S.String), + categoryId: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/knowledge-base/resources/documents", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "CreateDocumentResourceRequest", +}) as any as S.Schema; + +export type KnowledgeBaseDocumentResourceOutputType = "FILE"; +export const KnowledgeBaseDocumentResourceOutputType = /*@__PURE__*/ S.String; + +export type KnowledgeBaseDocumentResourceOutputCustomerVisibility = + | "PUBLIC" + | "SHAREABLE" + | "PRIVATE" + | "REQUEST_ACCESS"; +export const KnowledgeBaseDocumentResourceOutputCustomerVisibility = + /*@__PURE__*/ S.String; + +export type KnowledgeBaseDocumentResourceOutputDownloadPermission = + | "VIEW_ONLY" + | "VIEW_AND_DOWNLOAD"; +export const KnowledgeBaseDocumentResourceOutputDownloadPermission = + /*@__PURE__*/ S.String; + +export type KnowledgeBaseResourceActorAssignmentType = "User" | "Team"; +export const KnowledgeBaseResourceActorAssignmentType = /*@__PURE__*/ S.String; + +export interface KnowledgeBaseResourceActorAssignment { + type: KnowledgeBaseResourceActorAssignmentType; + id: string; + displayName: string | null; +} +export const KnowledgeBaseResourceActorAssignment = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + type: KnowledgeBaseResourceActorAssignmentType, + id: S.String, + displayName: S.NullOr(S.String), + }), +).annotate({ + identifier: "KnowledgeBaseResourceActorAssignment", +}) as any as S.Schema; + +/** Customer-facing expiration status used by knowledge-base API responses (answer library entries and resources). Derived from the persisted `expiresAt` field at read time. */ +export type KnowledgeBaseExpirationStatus = "CURRENT" | "EXPIRED"; +export const KnowledgeBaseExpirationStatus = /*@__PURE__*/ S.String; + +export type KnowledgeBaseDocumentResourceOutputTagsList = Array; +export const KnowledgeBaseDocumentResourceOutputTagsList = + /*@__PURE__*/ S.Array( + TagInput, + ) as any as S.Schema; + +export interface KnowledgeBaseDocumentResourceOutput { + id: string; + type: KnowledgeBaseDocumentResourceOutputType; + title: string; + description: string | null; + /** Presigned S3 URL for the underlying document. Expires after 1 hour due to AWS IAM Role limitations on presigned URL lifetimes. Re-fetch the resource to obtain a fresh URL once this one expires. */ + fileUrl: string; + customerVisibility: KnowledgeBaseDocumentResourceOutputCustomerVisibility | null; + downloadPermission: KnowledgeBaseDocumentResourceOutputDownloadPermission | null; + isUsedInQuestionnaires: boolean | null; + ownerAssignment: KnowledgeBaseResourceActorAssignment | null; + expirationStatus: KnowledgeBaseExpirationStatus; + expirationDate: string | null; + lastUpdated: string; + lastVerified: string | null; + tags: KnowledgeBaseDocumentResourceOutputTagsList; + /** Trust Center category id the resource is currently filed under, or `null` if uncategorized (or not on the Trust Center, which is the case for `PRIVATE` / `SHAREABLE` resources). */ + categoryId: string | null; +} +export const KnowledgeBaseDocumentResourceOutput = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + type: KnowledgeBaseDocumentResourceOutputType, + title: S.String, + description: S.NullOr(S.String), + fileUrl: S.String, + customerVisibility: S.NullOr( + KnowledgeBaseDocumentResourceOutputCustomerVisibility, + ), + downloadPermission: S.NullOr( + KnowledgeBaseDocumentResourceOutputDownloadPermission, + ), + isUsedInQuestionnaires: S.NullOr(S.Boolean), + ownerAssignment: S.NullOr(KnowledgeBaseResourceActorAssignment), + expirationStatus: KnowledgeBaseExpirationStatus, + expirationDate: S.NullOr(S.String), + lastUpdated: S.String, + lastVerified: S.NullOr(S.String), + tags: KnowledgeBaseDocumentResourceOutputTagsList, + categoryId: S.NullOr(S.String), + }), +).annotate({ + identifier: "KnowledgeBaseDocumentResourceOutput", +}) as any as S.Schema; + +export interface CreateFileQuestionnaireRequest { + file: string; + /** Display name for the questionnaire. */ + displayName: string; + /** Owner to assign, as a JSON string: {"type": "User" | "Team", "id": ""}. */ + ownerAssignment?: string; + /** Approver to assign, as a JSON string: {"type": "User" | "Team", "id": ""}. */ + approverAssignment?: string; + /** Description of the questionnaire. */ + description?: string; + /** URL of the company associated with this questionnaire. */ + companyUrl?: string; + /** Due date for questionnaire completion. */ + dueDate?: string; + /** ID of the customer trust account to associate with this questionnaire. */ + customerTrustAccountId?: string; + /** Comma-separated category IDs for which to include untagged entities. */ + includeUntaggedEntitiesForCategoryIds?: string; + /** Custom key-value pairs, as a JSON string array: [{"key": "", "value": ""}]. Keys and values may contain alphanumeric characters, hyphens, underscores, and periods. */ + metadata?: string; + /** Tags to assign, as a JSON string array: [{"categoryId": "", "tagId": ""}]. Replaces all existing tags. */ + tagAndCategoryIds?: string; +} +export const CreateFileQuestionnaireRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + file: S.String, + displayName: S.String, + ownerAssignment: S.optional(S.String), + approverAssignment: S.optional(S.String), + description: S.optional(S.String), + companyUrl: S.optional(S.String), + dueDate: S.optional(S.String), + customerTrustAccountId: S.optional(S.String), + includeUntaggedEntitiesForCategoryIds: S.optional(S.String), + metadata: S.optional(S.String), + tagAndCategoryIds: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/customer-trust/questionnaires/file", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "CreateFileQuestionnaireRequest", +}) as any as S.Schema; + +export interface CreateGroupRequest { + pointOfContactEmail?: string | null; + description?: string | null; + name: string; +} +export const CreateGroupRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pointOfContactEmail: S.optional(S.NullOr(S.String)), + description: S.optional(S.NullOr(S.String)), + name: S.String, + }).pipe(T.Http({ method: "POST", uri: "/groups", code: 200 })), +).annotate({ + identifier: "CreateGroupRequest", +}) as any as S.Schema; + +/** The group's point of contact. */ +export interface GroupPointOfContact { + /** The point of contact's email address. */ + email: string; + /** The point of contact's display name. */ + displayName: string; +} +export const GroupPointOfContact = /*@__PURE__*/ S.suspend(() => + S.Struct({ + email: S.String, + displayName: S.String, + }), +).annotate({ + identifier: "GroupPointOfContact", +}) as any as S.Schema; + +export interface Group { + /** The group's unique ID. */ + id: string; + /** The group's name. */ + name: string; + /** The group's creation date. */ + creationDate: string | null; + /** The group's description. */ + description: string | null; + /** The source that created the group. Manually created groups are set to "Vanta"; groups imported from an external source use that source's display name. */ + source: string; + /** The number of personnel in the group. */ + personnelCount: number; + /** The group's point of contact. */ + pointOfContact: GroupPointOfContact | null; +} +export const Group = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + creationDate: S.NullOr(S.String), + description: S.NullOr(S.String), + source: S.String, + personnelCount: S.Number, + pointOfContact: S.NullOr(GroupPointOfContact), + }), +).annotate({ identifier: "Group" }) as any as S.Schema; + +export interface CreateLinkForDocumentRequest { + documentId: string; + /** The link's URL */ + url: string; + /** The link's title. */ + title: string; + /** The link's description. */ + description?: string | null; + /** The link's effective date. */ + effectiveDate?: string | null; +} +export const CreateLinkForDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + url: S.String, + title: S.String, + description: S.optional(S.NullOr(S.String)), + effectiveDate: S.optional(S.NullOr(S.String)), + }).pipe( + T.Http({ method: "POST", uri: "/documents/{documentId}/links", code: 200 }), + ), +).annotate({ + identifier: "CreateLinkForDocumentRequest", +}) as any as S.Schema; + +export interface UploadedLink { + /** The link's unique ID */ + id: string; + /** The link's creation date. */ + creationDate: string; + /** The link's effective date. */ + effectiveDate: string | null; + /** The link's title. */ + title: string; + /** The link's URL. */ + url: string; + /** The link's description. */ + description: string; +} +export const UploadedLink = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + creationDate: S.String, + effectiveDate: S.NullOr(S.String), + title: S.String, + url: S.String, + description: S.String, + }), +).annotate({ identifier: "UploadedLink" }) as any as S.Schema; + +/** The output format for the exported questionnaire. - `"original"`: Exports in the questionnaire's native format (XLSX for spreadsheets, DOCX for documents). - `"csv"`: Exports as a CSV file, suitable for data analysis or import into other systems. */ +export type CreateQuestionnaireExportRequestFormat = "original" | "csv"; +export const CreateQuestionnaireExportRequestFormat = /*@__PURE__*/ S.String; + +export interface CreateQuestionnaireExportRequest { + /** Unique identifier for the questionnaire to trigger an export for. */ + questionnaireId: string; + /** The output format for the exported questionnaire. - `"original"`: Exports in the questionnaire's native format (XLSX for spreadsheets, DOCX for documents). - `"csv"`: Exports as a CSV file, suitable for data analysis or import into other systems. */ + format: CreateQuestionnaireExportRequestFormat | (string & {}); +} +export const CreateQuestionnaireExportRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaireId: S.String, + format: CreateQuestionnaireExportRequestFormat, + }).pipe( + T.Http({ + method: "POST", + uri: "/customer-trust/questionnaires/exports", + code: 200, + }), + ), +).annotate({ + identifier: "CreateQuestionnaireExportRequest", +}) as any as S.Schema; + +export interface CreateQuestionnaireExportResponse {} +export const CreateQuestionnaireExportResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "CreateQuestionnaireExportResponse", +}) as any as S.Schema; + +/** The list of categories this risk scenario belongs to. Each element in the list will become a new custom category if it doesn't match an existing one. You can reference the current category options in the Risk Management settings and/or enter new values. */ +export type CreateRiskScenarioRequestCategoriesList = Array; +export const CreateRiskScenarioRequestCategoriesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Enter a list of the following for the type of risk documented: - Confidentiality: Risk to data stores, customer/sensitive information, etc. - Integrity: Risk to accuracy or integrity of system settings and/or data - Availability: Risk to normal service operations and critical system functionality */ +export type CreateRiskScenarioRequestCiaCategoriesList = Array< + CIA | (string & {}) +>; +export const CreateRiskScenarioRequestCiaCategoriesList = /*@__PURE__*/ S.Array( + CIA, +) as any as S.Schema; + +/** The list of custom attributes. You can reference existing custom attributes in the Risk Management settings and/or create new ones. The format is: - {label: "field-name", value: "string-representation"} for text, date, number and currency fields - {label: "field-name", value: ["option1", "option2"]} for picklist fields */ +export type CreateRiskScenarioRequestCustomFieldsList = Array; +export const CreateRiskScenarioRequestCustomFieldsList = /*@__PURE__*/ S.Array( + CustomAttribute, +) as any as S.Schema; + +export interface CreateRiskScenarioRequest { + /** This describes an actual or potential risk to your organization's people, processes, technology, data, and facilities. Document actual issues or likely scenarios based on your specific environment or a potential vulnerability. */ + description: string; + /** Optional long-form description providing extended context for the risk scenario. Maximum 10000 characters. */ + detailedDescription?: string; + /** The unique ID of the risk. Used to reference and update existing risks. We will auto-generate one if one isn't specified. */ + riskId?: string; + /** If set to true this risk can only be seen by its owner or users with Admin, RiskSensitiveManage or RiskSensitiveView permissions. */ + isSensitive?: boolean; + /** Represents the probability of an incident occurring due to this risk or vulnerability, expressed as a numerical score. Defaults to a range of 1-5, where higher values indicate greater likelihood. The range can be customized in the Risk Management settings. */ + likelihood?: number; + /** Represents the potential severity of harm to your organization’s operations if this risk is exploited, expressed as a numerical score. Defaults to a range of 1-5, where higher values indicate greater impact. The range can be customized in the Risk Management settings. */ + impact?: number; + /** Represents the adjusted probability of this risk being exploited or affecting operations after implementing risk treatments, such as controls or mitigations. Expressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings. */ + residualLikelihood?: number; + /** Represents the adjusted severity of harm to your organization’s operations if this risk is exploited after implementing risk treatments, such as controls or mitigations. Expressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings. */ + residualImpact?: number; + /** The list of categories this risk scenario belongs to. Each element in the list will become a new custom category if it doesn't match an existing one. You can reference the current category options in the Risk Management settings and/or enter new values. */ + categories?: CreateRiskScenarioRequestCategoriesList; + /** Enter a list of the following for the type of risk documented: - Confidentiality: Risk to data stores, customer/sensitive information, etc. - Integrity: Risk to accuracy or integrity of system settings and/or data - Availability: Risk to normal service operations and critical system functionality */ + ciaCategories?: CreateRiskScenarioRequestCiaCategoriesList; + /** Indicate how your leadership team wants to address an identified risk. Please note: not all risks need to be addressed immediately (or at all). Your Risk Treatment decision will depend on multiple factors, such as your organization's risk tolerance and the value of the asset that the risk is associated with. The options are: - Mitigate: Identify controls to put in place or tasks to be done that will reduce the risk score. - Transfer: Move risk outside of your organization's set of responsibilities e.g. get cyber liability insurance. - Avoid: Stop doing the activity which is causing the risk to your organization and its assets. - Accept: Decide to live with the risk and take no further actions. - Accept: decide to live with the risk; this may be because it is highly unlikely, has a low financial or operational impact, or the cost and effort to treat the risk far exceeds the value of the asset */ + treatment?: Treatment | (string & {}); + /** The person responsible for tracking and mitigating this risk scenario. This should be the email address of a valid Vanta user. */ + owner?: string; + /** Additional context about the risk scenario and why it has specific impact and likelihood scores. */ + note?: string; + /** Name of the risk register to associate with this scenario. This field must be set if the organization has multiple registers. */ + riskRegister?: string; + /** The list of custom attributes. You can reference existing custom attributes in the Risk Management settings and/or create new ones. The format is: - {label: "field-name", value: "string-representation"} for text, date, number and currency fields - {label: "field-name", value: ["option1", "option2"]} for picklist fields */ + customFields?: CreateRiskScenarioRequestCustomFieldsList; + /** The type of risk scenario to create. - "Risk Scenario": Standard risk scenario (default) - "Enterprise Risk": Enterprise-level risk (requires Enterprise Risk Management SKU) Enterprise risks cannot be associated with a risk register. Defaults to "Risk Scenario" if not specified. */ + type?: RiskScenarioType | (string & {}); + /** The date this risk was identified. Matches the "Identified Date" field in the Vanta UI. Defaults to the scenario's creation time if omitted. */ + identificationDate?: string; +} +export const CreateRiskScenarioRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + description: S.String, + detailedDescription: S.optional(S.String), + riskId: S.optional(S.String), + isSensitive: S.optional(S.Boolean), + likelihood: S.optional(S.Number), + impact: S.optional(S.Number), + residualLikelihood: S.optional(S.Number), + residualImpact: S.optional(S.Number), + categories: S.optional(CreateRiskScenarioRequestCategoriesList), + ciaCategories: S.optional(CreateRiskScenarioRequestCiaCategoriesList), + treatment: S.optional(Treatment), + owner: S.optional(S.String), + note: S.optional(S.String), + riskRegister: S.optional(S.String), + customFields: S.optional(CreateRiskScenarioRequestCustomFieldsList), + type: S.optional(RiskScenarioType), + identificationDate: S.optional(S.String), + }).pipe(T.Http({ method: "POST", uri: "/risk-scenarios", code: 200 })), +).annotate({ + identifier: "CreateRiskScenarioRequest", +}) as any as S.Schema; + +export type RiskScenarioControlType = "EXISTING" | "TREATMENT_PLAN"; +export const RiskScenarioControlType = /*@__PURE__*/ S.String; + +export interface CreateRiskScenarioControlRequest { + riskScenarioId: string; + /** Control to associate with the risk scenario. Accepts Vanta control shorthands (e.g. `"A.12.2.1"`), custom-control shorthand names, or object IDs. */ + controlId: string; + /** `TREATMENT_PLAN` for a control that is part of the risk's treatment plan. Omit (or pass `"EXISTING"`) to associate the control without a treatment-plan designation — the default "existing control" relationship. */ + controlType?: RiskScenarioControlType | (string & {}); +} +export const CreateRiskScenarioControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + riskScenarioId: S.String.pipe(T.Label()), + controlId: S.String, + controlType: S.optional(RiskScenarioControlType), + }).pipe( + T.Http({ + method: "POST", + uri: "/risk-scenarios/{riskScenarioId}/controls", + code: 200, + }), + ), +).annotate({ + identifier: "CreateRiskScenarioControlRequest", +}) as any as S.Schema; + +/** A control's association with a risk scenario. The relationship identity is `(riskScenarioId, controlId)`; `controlType` is mutable state on that relationship. A given control can have at most one association per risk scenario. */ +export interface RiskScenarioControl { + /** The control's shorthand identifier (e.g. `"A.12.2.1"`) when it has one, falling back to the canonical Vanta control id (Mongo object id) otherwise. */ + controlId: string; + /** `TREATMENT_PLAN` for controls that are part of the risk's treatment plan (planned mitigations); `EXISTING` for controls linked to the risk without a treatment-plan designation. */ + controlType: RiskScenarioControlType; +} +export const RiskScenarioControl = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String, + controlType: RiskScenarioControlType, + }), +).annotate({ + identifier: "RiskScenarioControl", +}) as any as S.Schema; + +export interface CreateTrustCenterFaqRequest { + slugId: string; + /** The FAQ question. */ + question: string; + /** The FAQ answer. */ + answer: string; + /** The category to place this FAQ in. Pass null to move to uncategorized. Omit to leave unchanged (on update) or default to uncategorized (on create). */ + categoryId?: string | null; +} +export const CreateTrustCenterFaqRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + question: S.String, + answer: S.String, + categoryId: S.optional(S.NullOr(S.String)), + }).pipe( + T.Http({ method: "POST", uri: "/trust-centers/{slugId}/faqs", code: 200 }), + ), +).annotate({ + identifier: "CreateTrustCenterFaqRequest", +}) as any as S.Schema; + +export interface TrustCenterFaq { + /** Unique identifier for the Trust Center FAQ. */ + id: string; + /** The FAQ question. */ + question: string; + /** The FAQ answer. */ + answer: string; + /** The category this FAQ belongs to, or null if uncategorized. */ + category: TrustCenterFaqCategory | null; +} +export const TrustCenterFaq = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + question: S.String, + answer: S.String, + category: S.NullOr(TrustCenterFaqCategory), + }), +).annotate({ identifier: "TrustCenterFaq" }) as any as S.Schema; + +export interface CreateTrustCenterResourceRequest { + slugId: string; + file: string; + /** Title of the Trust Center document. */ + title: string; + /** Boolean determining whether the document is publicly available. */ + isPublic: string; + /** Description of the uploaded document. */ + description?: string; +} +export const CreateTrustCenterResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + file: S.String, + title: S.String, + isPublic: S.String, + description: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/resources", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "CreateTrustCenterResourceRequest", +}) as any as S.Schema; + +export interface TrustCenterResource { + /** Unique identifier for the document. */ + id: string; + /** The file name of the document. */ + fileName: string | null; + /** The document's title. */ + title: string; + /** The document's description */ + description: string | null; + /** Mime type of the document. */ + mimeType: string; + /** Date of when the document was uploaded. */ + creationDate: string; + /** Date when the document was last updated. */ + updatedDate: string; + /** Boolean determining whether the document is publicly available. */ + isPublic: boolean; +} +export const TrustCenterResource = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + fileName: S.NullOr(S.String), + title: S.String, + description: S.NullOr(S.String), + mimeType: S.String, + creationDate: S.String, + updatedDate: S.String, + isPublic: S.Boolean, + }), +).annotate({ + identifier: "TrustCenterResource", +}) as any as S.Schema; + +export interface CreateTrustCenterSubprocessorRequest { + slugId: string; + /** Name of the subprocessor. */ + name: string; + /** URL of the subprocessor. */ + url?: string; + /** Description of the subprocessor. */ + description?: string; + /** Where this subprocessor is deployed. */ + location?: string; + /** The purpose that the subprocessor serves. */ + purpose?: string; +} +export const CreateTrustCenterSubprocessorRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + name: S.String, + url: S.optional(S.String), + description: S.optional(S.String), + location: S.optional(S.String), + purpose: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/subprocessors", + code: 200, + }), + ), +).annotate({ + identifier: "CreateTrustCenterSubprocessorRequest", +}) as any as S.Schema; + +export interface CreateTrustCenterSubprocessorResponse { + /** Unique identifier for the subprocessor. */ + id: string; + /** Name of the subprocessor. */ + name: string; + /** Description of the subprocessor. */ + description: string | null; + /** Where this subprocessor is deployed. */ + location: string | null; + /** The purpose that the subprocessor serves. */ + purpose: string | null; + /** URL of the subprocessor. */ + url: string | null; +} +export const CreateTrustCenterSubprocessorResponse = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String, + name: S.String, + description: S.NullOr(S.String), + location: S.NullOr(S.String), + purpose: S.NullOr(S.String), + url: S.NullOr(S.String), + }), +).annotate({ + identifier: "CreateTrustCenterSubprocessorResponse", +}) as any as S.Schema; + +export interface CreateTrustCenterSubscriberRequest { + slugId: string; + /** Email of the subscriber. */ + email: string; + /** Optional: Link subscriber to a customer trust account by ID. */ + customerTrustAccountId?: string; + /** When true, the subscriber is created as already verified and no verification email is sent. Defaults to false. */ + shouldSkipEmailVerification?: boolean; +} +export const CreateTrustCenterSubscriberRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + email: S.String, + customerTrustAccountId: S.optional(S.String), + shouldSkipEmailVerification: S.optional(S.Boolean), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/subscribers", + code: 200, + }), + ), +).annotate({ + identifier: "CreateTrustCenterSubscriberRequest", +}) as any as S.Schema; + +export interface SubscriberGroup { + /** Unique identifier for the group. */ + id: string; + /** Name of the group. */ + name: string; +} +export const SubscriberGroup = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + }), +).annotate({ + identifier: "SubscriberGroup", +}) as any as S.Schema; + +/** Groups this subscriber belongs to. */ +export type TrustCenterSubscriberGroupsList = Array; +export const TrustCenterSubscriberGroupsList = /*@__PURE__*/ S.Array( + SubscriberGroup, +) as any as S.Schema; + +export interface TrustCenterSubscriber { + /** Unique identifier for the subscriber. */ + id: string; + /** Email of the subscriber. */ + email: string; + /** Whether the subscriber's email has been verified. */ + isEmailVerified: boolean; + /** When the subscriber was created. */ + creationDate: string; + /** The ID of the customer trust account this subscriber is linked to, if any. */ + customerTrustAccountId: string | null; + /** Groups this subscriber belongs to. */ + groups: TrustCenterSubscriberGroupsList; +} +export const TrustCenterSubscriber = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + email: S.String, + isEmailVerified: S.Boolean, + creationDate: S.String, + customerTrustAccountId: S.NullOr(S.String), + groups: TrustCenterSubscriberGroupsList, + }), +).annotate({ + identifier: "TrustCenterSubscriber", +}) as any as S.Schema; + +/** List of subscriber IDs in the group. */ +export type CreateTrustCenterSubscriberGroupRequestSubscriberIdsList = + Array; +export const CreateTrustCenterSubscriberGroupRequestSubscriberIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface CreateTrustCenterSubscriberGroupRequest { + slugId: string; + /** Name of the subscriber group. */ + name: string; + /** List of subscriber IDs in the group. */ + subscriberIds: CreateTrustCenterSubscriberGroupRequestSubscriberIdsList; +} +export const CreateTrustCenterSubscriberGroupRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + name: S.String, + subscriberIds: CreateTrustCenterSubscriberGroupRequestSubscriberIdsList, + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/subscriber-groups", + code: 200, + }), + ), +).annotate({ + identifier: "CreateTrustCenterSubscriberGroupRequest", +}) as any as S.Schema; + +/** List of subscriber IDs in the group. */ +export type TrustCenterSubscriberGroupSubscriberIdsList = Array; +export const TrustCenterSubscriberGroupSubscriberIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface TrustCenterSubscriberGroup { + /** Unique identifier for the subscriber group. */ + id: string; + /** Name of the subscriber group. */ + name: string; + /** List of subscriber IDs in the group. */ + subscriberIds: TrustCenterSubscriberGroupSubscriberIdsList; + /** When the subscriber group was created. */ + creationDate: string; +} +export const TrustCenterSubscriberGroup = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + subscriberIds: TrustCenterSubscriberGroupSubscriberIdsList, + creationDate: S.String, + }), +).annotate({ + identifier: "TrustCenterSubscriberGroup", +}) as any as S.Schema; + +/** The possible categories for a Trust Center update. */ +export type UpdateCategory = + | "GENERAL" + | "COMPLIANCE" + | "SECURITY" + | "PRIVACY" + | "INCIDENT" + | "ROADMAP"; +export const UpdateCategory = /*@__PURE__*/ S.String; + +/** Visibility of a Trust Center update. */ +export type UpdateVisibilityType = "PUBLIC" | "PRIVATE"; +export const UpdateVisibilityType = /*@__PURE__*/ S.String; + +/** Additional one-off email addresses to notify. These are always sent regardless of `notificationTarget`. */ +export type CreateTrustCenterUpdateRequestNotifiedEmailsList = Array; +export const CreateTrustCenterUpdateRequestNotifiedEmailsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** Target recipients for notifications */ +export type UpdateNotificationTarget = "ALL" | "GROUPS" | "NONE"; +export const UpdateNotificationTarget = /*@__PURE__*/ S.String; + +/** IDs of subscriber groups to notify. Required when `notificationTarget` is `GROUPS`. */ +export type CreateTrustCenterUpdateRequestSubscriberGroupIdsList = + Array; +export const CreateTrustCenterUpdateRequestSubscriberGroupIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface CreateTrustCenterUpdateRequest { + slugId: string; + /** Title of the update. */ + title: string; + /** Description of the update. */ + description: string; + /** Category of the update. */ + category: UpdateCategory | (string & {}); + /** Visibility type of the update. */ + visibilityType?: UpdateVisibilityType | (string & {}); + /** Additional one-off email addresses to notify. These are always sent regardless of `notificationTarget`. */ + notifiedEmails?: CreateTrustCenterUpdateRequestNotifiedEmailsList; + /** Controls which Trust Center subscribers are notified. - `ALL`: notifies all active subscribers - `GROUPS`: notifies only subscribers in the specified `subscriberGroupIds` - `NONE`: no subscribers are notified Note: `notifiedEmails` are always sent regardless of this value. */ + notificationTarget?: UpdateNotificationTarget | (string & {}); + /** IDs of subscriber groups to notify. Required when `notificationTarget` is `GROUPS`. */ + subscriberGroupIds?: CreateTrustCenterUpdateRequestSubscriberGroupIdsList; +} +export const CreateTrustCenterUpdateRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + title: S.String, + description: S.String, + category: UpdateCategory, + visibilityType: S.optional(UpdateVisibilityType), + notifiedEmails: S.optional( + CreateTrustCenterUpdateRequestNotifiedEmailsList, + ), + notificationTarget: S.optional(UpdateNotificationTarget), + subscriberGroupIds: S.optional( + CreateTrustCenterUpdateRequestSubscriberGroupIdsList, + ), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/updates", + code: 200, + }), + ), +).annotate({ + identifier: "CreateTrustCenterUpdateRequest", +}) as any as S.Schema; + +/** Emails to notify about the update. */ +export type TrustCenterUpdateAPIResponseNotifiedEmailsList = Array; +export const TrustCenterUpdateAPIResponseNotifiedEmailsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface TrustCenterUpdateAPIResponse { + /** Unique identifier for the update. */ + id: string; + /** Title of the update. */ + title: string; + /** Description of the update. */ + description: string; + /** Category of the update. */ + category: UpdateCategory; + /** Date the update was created. */ + creationDate: string; + /** Date the viewer was last updated. */ + updatedDate: string; + /** Visibility type of the update. */ + visibilityType: UpdateVisibilityType; + /** Emails to notify about the update. */ + notifiedEmails?: TrustCenterUpdateAPIResponseNotifiedEmailsList; +} +export const TrustCenterUpdateAPIResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + title: S.String, + description: S.String, + category: UpdateCategory, + creationDate: S.String, + updatedDate: S.String, + visibilityType: UpdateVisibilityType, + notifiedEmails: S.optional(TrustCenterUpdateAPIResponseNotifiedEmailsList), + }), +).annotate({ + identifier: "TrustCenterUpdateAPIResponse", +}) as any as S.Schema; + +/** The authentication details about the vendor. */ +export interface CreateVendorRequestAuthDetails { + /** Minimum number for chacters required for passwords for this vendor. */ + passwordMinimumLength?: number; + /** Whether or not the vendor requires passwords to have a symbol. */ + passwordRequiresSymbol?: boolean; + /** Whether or not the vendor requires passwords to have a number. */ + passwordRequiresNumber?: boolean; + /** Whether or not the vendor requires password multi factor authentication. */ + passwordMFA?: boolean; + /** The authentication method the vendor uses. */ + method?: VendorAuthenticationMethod | (string & {}); +} +export const CreateVendorRequestAuthDetails = /*@__PURE__*/ S.suspend(() => + S.Struct({ + passwordMinimumLength: S.optional(S.Number), + passwordRequiresSymbol: S.optional(S.Boolean), + passwordRequiresNumber: S.optional(S.Boolean), + passwordMFA: S.optional(S.Boolean), + method: S.optional(VendorAuthenticationMethod), + }), +).annotate({ + identifier: "CreateVendorRequestAuthDetails", +}) as any as S.Schema; + +/** The custom fields for the vendor. For more information on how to set custom fields via the API, visit https://developer.vanta.com/docs/guides/use-custom-fields-with-vendors */ +export type CreateVendorRequestCustomFieldsList = Array; +export const CreateVendorRequestCustomFieldsList = /*@__PURE__*/ S.Array( + CustomField, +) as any as S.Schema; + +/** The scope type: - ALL: Vendor applies to all frameworks - PARTIAL: Vendor applies to specific frameworks (requires frameworkIds) - NONE: Vendor excluded from all frameworks */ +export type VendorFrameworkScopeScopeType = "ALL" | "PARTIAL" | "NONE"; +export const VendorFrameworkScopeScopeType = /*@__PURE__*/ S.String; + +/** Framework IDs the vendor applies to. Required when scopeType is PARTIAL. */ +export type VendorFrameworkScopeFrameworkIdsList = Array; +export const VendorFrameworkScopeFrameworkIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Framework scoping configuration for a vendor. Determines which compliance frameworks the vendor applies to. */ +export interface VendorFrameworkScope { + /** The scope type: - ALL: Vendor applies to all frameworks - PARTIAL: Vendor applies to specific frameworks (requires frameworkIds) - NONE: Vendor excluded from all frameworks */ + scopeType: VendorFrameworkScopeScopeType | (string & {}); + /** Framework IDs the vendor applies to. Required when scopeType is PARTIAL. */ + frameworkIds?: VendorFrameworkScopeFrameworkIdsList; +} +export const VendorFrameworkScope = /*@__PURE__*/ S.suspend(() => + S.Struct({ + scopeType: VendorFrameworkScopeScopeType, + frameworkIds: S.optional(VendorFrameworkScopeFrameworkIdsList), + }), +).annotate({ + identifier: "VendorFrameworkScope", +}) as any as S.Schema; + +export interface CreateVendorRequest { + /** Display name of the vendor. */ + name: string; + /** The url of the vendor's website. */ + websiteUrl?: string; + /** Name of the external account manager for this vendor. */ + accountManagerName?: string; + /** Email of the external account manager for this vendor. */ + accountManagerEmail?: string; + /** The Vanta user ID of the security owner of this vendor. */ + securityOwnerUserId?: string; + /** Services provided by the vendor. */ + servicesProvided?: string; + /** Miscellaneous notes about the vendor */ + additionalNotes?: string; + /** The Vanta user ID of the business owner of this vendor. */ + businessOwnerUserId?: string; + /** When the contract with the vendor is up for renewal. */ + contractStartDate?: string; + /** When the contract with the vendor is up for renewal. */ + contractRenewalDate?: string; + /** When the contract with the vendor was terminated. */ + contractTerminationDate?: string; + /** Whether or not auditors can view this vendor. */ + isVisibleToAuditors?: boolean; + /** The authentication details about the vendor. */ + authDetails?: CreateVendorRequestAuthDetails; + /** The current status of the vendor. */ + status?: VendorStatus | (string & {}); + /** The vendor's category. */ + category?: string; + /** The inherent risk level of the vendor. */ + inherentRiskLevel?: VendorRiskLevel | (string & {}); + /** The residual risk level of the vendor. */ + residualRiskLevel?: VendorRiskLevel | (string & {}); + /** The vendor's headquarters. */ + vendorHeadquarters?: CountryCode | (string & {}); + /** The contract amount for the vendor. */ + contractAmount?: VendorContractAmount; + /** The custom fields for the vendor. For more information on how to set custom fields via the API, visit https://developer.vanta.com/docs/guides/use-custom-fields-with-vendors */ + customFields?: CreateVendorRequestCustomFieldsList; + /** Framework scoping configuration for this vendor. Determines which compliance frameworks the vendor applies to. */ + frameworkScope?: VendorFrameworkScope; +} +export const CreateVendorRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + name: S.String, + websiteUrl: S.optional(S.String), + accountManagerName: S.optional(S.String), + accountManagerEmail: S.optional(S.String), + securityOwnerUserId: S.optional(S.String), + servicesProvided: S.optional(S.String), + additionalNotes: S.optional(S.String), + businessOwnerUserId: S.optional(S.String), + contractStartDate: S.optional(S.String), + contractRenewalDate: S.optional(S.String), + contractTerminationDate: S.optional(S.String), + isVisibleToAuditors: S.optional(S.Boolean), + authDetails: S.optional(CreateVendorRequestAuthDetails), + status: S.optional(VendorStatus), + category: S.optional(S.String), + inherentRiskLevel: S.optional(VendorRiskLevel), + residualRiskLevel: S.optional(VendorRiskLevel), + vendorHeadquarters: S.optional(CountryCode), + contractAmount: S.optional(VendorContractAmount), + customFields: S.optional(CreateVendorRequestCustomFieldsList), + frameworkScope: S.optional(VendorFrameworkScope), + }).pipe(T.Http({ method: "POST", uri: "/vendors", code: 200 })), +).annotate({ + identifier: "CreateVendorRequest", +}) as any as S.Schema; + +/** The status of the finding: - ACCEPT: The finding and its risk has been accepted and no follow up is required. - REMEDIATE: The finding needs to be remediated in some way. - NONE: The finding is not related to an observed risk that needs to be accepted or remediated. */ +export type FindingRiskStatus = "ACCEPT" | "REMEDIATE" | "NONE"; +export const FindingRiskStatus = /*@__PURE__*/ S.String; + +/** The current state of a finding remediation: - OPEN: The finding has not been remediated and still needs to be addressed. - CLOSED: The finding has been remediated and no further action is needed. */ +export type FindingRemediationState = "OPEN" | "CLOSED"; +export const FindingRemediationState = /*@__PURE__*/ S.String; + +/** Remediation information about the finding. Will only be populated if riskStatus is set to "REMEDIATE". */ +export interface CreateVendorFindingRequestRemediation { + /** The state of the remediation. */ + state?: FindingRemediationState | (string & {}); + /** A string containing the information needed to properly remediate the finding. */ + requirementNotes?: string; +} +export const CreateVendorFindingRequestRemediation = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + state: S.optional(FindingRemediationState), + requirementNotes: S.optional(S.String), + }), +).annotate({ + identifier: "CreateVendorFindingRequestRemediation", +}) as any as S.Schema; + +export interface CreateVendorFindingRequest { + vendorId: string; + /** The content of the finding. */ + content: string; + /** The risk status of the finding. */ + riskStatus: FindingRiskStatus | (string & {}); + /** Remediation information about the finding. Will only be populated if riskStatus is set to "REMEDIATE". */ + remediation?: CreateVendorFindingRequestRemediation; + /** Unique identifier for a security review. */ + securityReviewId?: string; + /** Unique identifier for a document. */ + documentId?: string; +} +export const CreateVendorFindingRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + content: S.String, + riskStatus: FindingRiskStatus, + remediation: S.optional(CreateVendorFindingRequestRemediation), + securityReviewId: S.optional(S.String), + documentId: S.optional(S.String), + }).pipe( + T.Http({ method: "POST", uri: "/vendors/{vendorId}/findings", code: 200 }), + ), +).annotate({ + identifier: "CreateVendorFindingRequest", +}) as any as S.Schema; + +/** Remediation information about the finding. Will only be populated if riskStatus is set to "REMEDIATE". */ +export interface VendorFindingRemediation { + /** The state of the remediation. */ + state: FindingRemediationState; + /** A string containing the information needed to properly remediate the finding. */ + requirementNotes: string | null; +} +export const VendorFindingRemediation = /*@__PURE__*/ S.suspend(() => + S.Struct({ + state: FindingRemediationState, + requirementNotes: S.NullOr(S.String), + }), +).annotate({ + identifier: "VendorFindingRemediation", +}) as any as S.Schema; + +export interface VendorFinding { + /** Unique identifier for the finding. */ + id: string; + /** Unique identifier for the vendor. */ + vendorId: string; + /** Unique identifier for a security review. */ + securityReviewId: string | null; + /** Unique identifier for a document. */ + documentId: string | null; + /** The content of the finding. */ + content: string; + /** The risk status of the finding. */ + riskStatus: FindingRiskStatus; + /** Remediation information about the finding. Will only be populated if riskStatus is set to "REMEDIATE". */ + remediation: VendorFindingRemediation | null; +} +export const VendorFinding = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + vendorId: S.String, + securityReviewId: S.NullOr(S.String), + documentId: S.NullOr(S.String), + content: S.String, + riskStatus: FindingRiskStatus, + remediation: S.NullOr(VendorFindingRemediation), + }), +).annotate({ identifier: "VendorFinding" }) as any as S.Schema; + +/** The type of actor. Currently only "User" is supported. */ +export type KnowledgeBaseResourceActorAssignmentInputType = "User"; +export const KnowledgeBaseResourceActorAssignmentInputType = + /*@__PURE__*/ S.String; + +export interface KnowledgeBaseResourceActorAssignmentInput { + /** The type of actor. Currently only "User" is supported. */ + type: KnowledgeBaseResourceActorAssignmentInputType | (string & {}); + /** The unique identifier of the user. */ + id: string; +} +export const KnowledgeBaseResourceActorAssignmentInput = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: KnowledgeBaseResourceActorAssignmentInputType, + id: S.String, + }), + ).annotate({ + identifier: "KnowledgeBaseResourceActorAssignmentInput", + }) as any as S.Schema; + +/** Customer-facing visibility of a knowledge-base resource on the Trust Center. Use {@link CUSTOMER_VISIBILITY_TO_DB} to translate to {@link TrustCenterResourceVisibility} when persisting. */ +export type KnowledgeBaseCustomerVisibility = + | "PRIVATE" + | "SHAREABLE" + | "REQUEST_ACCESS" + | "PUBLIC"; +export const KnowledgeBaseCustomerVisibility = /*@__PURE__*/ S.String; + +/** Tags to associate with the resource. */ +export type CreateWebpageResourceRequestTagsList = Array; +export const CreateWebpageResourceRequestTagsList = /*@__PURE__*/ S.Array( + TagInput, +) as any as S.Schema; + +export interface CreateWebpageResourceRequest { + /** The title of the webpage resource. */ + title: string; + /** The URL of the webpage. */ + url: string; + /** A description for the webpage resource. */ + description?: string; + /** The actor to assign as owner. Currently only type "User" is supported. */ + ownerAssignment?: KnowledgeBaseResourceActorAssignmentInput; + /** Customer visibility on the Trust Center. Webpage resources accept only PRIVATE or PUBLIC; REQUEST_ACCESS and SHAREABLE return an InvalidInputError. */ + customerVisibility?: KnowledgeBaseCustomerVisibility | (string & {}); + /** Whether to scan sub-pages one level deep alongside the primary URL. */ + includeSubPages?: boolean; + /** Whether the resource should be used for question-answering in Questionnaire Automation. */ + isUsedInQuestionnaires?: boolean; + /** Expiration date in ISO 8601 format. */ + expirationDate?: string; + /** Tags to associate with the resource. */ + tags?: CreateWebpageResourceRequestTagsList; + /** Trust Center category id to associate this resource with. Pass `null` to keep the resource uncategorized. Only valid when `customerVisibility` is PUBLIC; other combinations and unknown ids return an InvalidInputError. */ + categoryId?: string | null; +} +export const CreateWebpageResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + title: S.String, + url: S.String, + description: S.optional(S.String), + ownerAssignment: S.optional(KnowledgeBaseResourceActorAssignmentInput), + customerVisibility: S.optional(KnowledgeBaseCustomerVisibility), + includeSubPages: S.optional(S.Boolean), + isUsedInQuestionnaires: S.optional(S.Boolean), + expirationDate: S.optional(S.String), + tags: S.optional(CreateWebpageResourceRequestTagsList), + categoryId: S.optional(S.NullOr(S.String)), + }).pipe( + T.Http({ + method: "POST", + uri: "/knowledge-base/resources/webpages", + code: 200, + }), + ), +).annotate({ + identifier: "CreateWebpageResourceRequest", +}) as any as S.Schema; + +export type KnowledgeBaseWebpageResourceOutputType = "URL"; +export const KnowledgeBaseWebpageResourceOutputType = /*@__PURE__*/ S.String; + +export type KnowledgeBaseWebpageResourceOutputCustomerVisibility = + | "PUBLIC" + | "SHAREABLE" + | "PRIVATE" + | "REQUEST_ACCESS"; +export const KnowledgeBaseWebpageResourceOutputCustomerVisibility = + /*@__PURE__*/ S.String; + +export type KnowledgeBaseWebpageResourceOutputTagsList = Array; +export const KnowledgeBaseWebpageResourceOutputTagsList = /*@__PURE__*/ S.Array( + TagInput, +) as any as S.Schema; + +export interface KnowledgeBaseWebpageResourceOutput { + id: string; + type: KnowledgeBaseWebpageResourceOutputType; + title: string; + description: string | null; + url: string; + customerVisibility: KnowledgeBaseWebpageResourceOutputCustomerVisibility | null; + includeSubPages: boolean | null; + isUsedInQuestionnaires: boolean | null; + ownerAssignment: KnowledgeBaseResourceActorAssignment | null; + expirationStatus: KnowledgeBaseExpirationStatus; + expirationDate: string | null; + lastUpdated: string; + lastVerified: string | null; + tags: KnowledgeBaseWebpageResourceOutputTagsList; + /** Trust Center category id the resource is currently filed under, or `null` if uncategorized (or not on the Trust Center, which is the case for `PRIVATE` / `SHAREABLE` resources). */ + categoryId: string | null; +} +export const KnowledgeBaseWebpageResourceOutput = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + type: KnowledgeBaseWebpageResourceOutputType, + title: S.String, + description: S.NullOr(S.String), + url: S.String, + customerVisibility: S.NullOr( + KnowledgeBaseWebpageResourceOutputCustomerVisibility, + ), + includeSubPages: S.NullOr(S.Boolean), + isUsedInQuestionnaires: S.NullOr(S.Boolean), + ownerAssignment: S.NullOr(KnowledgeBaseResourceActorAssignment), + expirationStatus: KnowledgeBaseExpirationStatus, + expirationDate: S.NullOr(S.String), + lastUpdated: S.String, + lastVerified: S.NullOr(S.String), + tags: KnowledgeBaseWebpageResourceOutputTagsList, + categoryId: S.NullOr(S.String), + }), +).annotate({ + identifier: "KnowledgeBaseWebpageResourceOutput", +}) as any as S.Schema; + +export type ActorAssignmentInputType = "User" | "Team"; +export const ActorAssignmentInputType = /*@__PURE__*/ S.String; + +export interface ActorAssignmentInput { + type: ActorAssignmentInputType | (string & {}); + id: string; +} +export const ActorAssignmentInput = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: ActorAssignmentInputType, + id: S.String, + }), +).annotate({ + identifier: "ActorAssignmentInput", +}) as any as S.Schema; + +export interface QuestionnaireMetadata { + key: string; + value: string; +} +export const QuestionnaireMetadata = /*@__PURE__*/ S.suspend(() => + S.Struct({ + key: S.String, + value: S.String, + }), +).annotate({ + identifier: "QuestionnaireMetadata", +}) as any as S.Schema; + +/** Custom key-value pairs. Keys and values may contain alphanumeric characters, hyphens, underscores, and periods. Maximum 30 entries. */ +export type CreateWebsiteQuestionnaireRequestMetadataList = + Array; +export const CreateWebsiteQuestionnaireRequestMetadataList = + /*@__PURE__*/ S.Array( + QuestionnaireMetadata, + ) as any as S.Schema; + +/** Category IDs for which to include untagged entities. */ +export type CreateWebsiteQuestionnaireRequestIncludeUntaggedEntitiesForCategoryIdsList = + Array; +export const CreateWebsiteQuestionnaireRequestIncludeUntaggedEntitiesForCategoryIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** Tags to assign to the questionnaire. Each entry must include a categoryId and tagId. Replaces all existing tags. */ +export type CreateWebsiteQuestionnaireRequestTagAndCategoryIdsList = + Array; +export const CreateWebsiteQuestionnaireRequestTagAndCategoryIdsList = + /*@__PURE__*/ S.Array( + TagInput, + ) as any as S.Schema; + +export interface CreateWebsiteQuestionnaireRequest { + /** Display name for the questionnaire. */ + displayName: string; + /** The portal URL to create the questionnaire from. */ + url: string; + /** Actor to assign as the owner (user or team). */ + ownerAssignment?: ActorAssignmentInput; + /** Actor to assign as the approver (user or team). */ + approverAssignment?: ActorAssignmentInput; + /** URL of the company associated with this questionnaire. */ + companyUrl?: string; + /** ID of the customer trust account to associate with this questionnaire. */ + customerTrustAccountId?: string; + /** Description of the questionnaire. */ + description?: string; + /** Due date for questionnaire completion (ISO 8601). */ + dueDate?: string; + /** Custom key-value pairs. Keys and values may contain alphanumeric characters, hyphens, underscores, and periods. Maximum 30 entries. */ + metadata?: CreateWebsiteQuestionnaireRequestMetadataList; + /** Category IDs for which to include untagged entities. */ + includeUntaggedEntitiesForCategoryIds?: CreateWebsiteQuestionnaireRequestIncludeUntaggedEntitiesForCategoryIdsList; + /** Tags to assign to the questionnaire. Each entry must include a categoryId and tagId. Replaces all existing tags. */ + tagAndCategoryIds?: CreateWebsiteQuestionnaireRequestTagAndCategoryIdsList; +} +export const CreateWebsiteQuestionnaireRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + displayName: S.String, + url: S.String, + ownerAssignment: S.optional(ActorAssignmentInput), + approverAssignment: S.optional(ActorAssignmentInput), + companyUrl: S.optional(S.String), + customerTrustAccountId: S.optional(S.String), + description: S.optional(S.String), + dueDate: S.optional(S.String), + metadata: S.optional(CreateWebsiteQuestionnaireRequestMetadataList), + includeUntaggedEntitiesForCategoryIds: S.optional( + CreateWebsiteQuestionnaireRequestIncludeUntaggedEntitiesForCategoryIdsList, + ), + tagAndCategoryIds: S.optional( + CreateWebsiteQuestionnaireRequestTagAndCategoryIdsList, + ), + }).pipe( + T.Http({ + method: "POST", + uri: "/customer-trust/questionnaires/website", + code: 200, + }), + ), +).annotate({ + identifier: "CreateWebsiteQuestionnaireRequest", +}) as any as S.Schema; + +export interface DeactivateTestEntityRequest { + testId: string; + entityId: string; + /** Reason for deactivating the entity. */ + deactivateReason: string; + /** Date until which the entity should be deactivated. If not provided, the entity will be deactivated indefinitely. */ + deactivateUntilDate?: string; +} +export const DeactivateTestEntityRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + testId: S.String.pipe(T.Label()), + entityId: S.String.pipe(T.Label()), + deactivateReason: S.String, + deactivateUntilDate: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/tests/{testId}/entities/{entityId}/deactivate", + code: 200, + }), + ), +).annotate({ + identifier: "DeactivateTestEntityRequest", +}) as any as S.Schema; + +export interface DeactivateTestEntityResponse {} +export const DeactivateTestEntityResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeactivateTestEntityResponse", +}) as any as S.Schema; + +export interface VulnerabilityDeactivateRequest { + /** ID of the vulnerability to deactivate. */ + id: string; + /** Date until which the vulnerability should be deactivated. */ + deactivateUntilDate?: string; + /** Reason for deactivating the vulnerability. */ + deactivateReason: string; + /** Determines whether or not vulnerabilities should reactivate when they become fixable. */ + shouldReactivateWhenFixable: boolean; +} +export const VulnerabilityDeactivateRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + deactivateUntilDate: S.optional(S.String), + deactivateReason: S.String, + shouldReactivateWhenFixable: S.Boolean, + }), +).annotate({ + identifier: "VulnerabilityDeactivateRequest", +}) as any as S.Schema; + +/** List of vulnerabilities to deactivate. */ +export type DeactivateVulnerabilitiesRequestUpdatesList = + Array; +export const DeactivateVulnerabilitiesRequestUpdatesList = + /*@__PURE__*/ S.Array( + VulnerabilityDeactivateRequest, + ) as any as S.Schema; + +export interface DeactivateVulnerabilitiesRequest { + /** List of vulnerabilities to deactivate. */ + updates: DeactivateVulnerabilitiesRequestUpdatesList; +} +export const DeactivateVulnerabilitiesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + updates: DeactivateVulnerabilitiesRequestUpdatesList, + }).pipe( + T.Http({ method: "POST", uri: "/vulnerabilities/deactivate", code: 200 }), + ), +).annotate({ + identifier: "DeactivateVulnerabilitiesRequest", +}) as any as S.Schema; + +export interface DeleteAnswerLibraryEntryRouteRequest { + id: string; +} +export const DeleteAnswerLibraryEntryRouteRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/knowledge-base/answer-library/{id}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteAnswerLibraryEntryRouteRequest", +}) as any as S.Schema; + +export interface DeleteAnswerLibraryEntryRouteResponse {} +export const DeleteAnswerLibraryEntryRouteResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "DeleteAnswerLibraryEntryRouteResponse", +}) as any as S.Schema; + +export interface DeleteByIdRequest { + vendorId: string; +} +export const DeleteByIdRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "DELETE", uri: "/vendors/{vendorId}", code: 200 })), +).annotate({ + identifier: "DeleteByIdRequest", +}) as any as S.Schema; + +export interface DeleteByIdResponse {} +export const DeleteByIdResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteByIdResponse", +}) as any as S.Schema; + +export interface DeleteComplianceFrameworkRequest { + slugId: string; + frameworkId: string; +} +export const DeleteComplianceFrameworkRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + frameworkId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/compliance-frameworks/{frameworkId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteComplianceFrameworkRequest", +}) as any as S.Schema; + +export interface DeleteComplianceFrameworkResponse {} +export const DeleteComplianceFrameworkResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteComplianceFrameworkResponse", +}) as any as S.Schema; + +export interface DeleteContractRequest { + contractId: string; +} +export const DeleteContractRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + contractId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ method: "DELETE", uri: "/contracts/{contractId}", code: 200 }), + ), +).annotate({ + identifier: "DeleteContractRequest", +}) as any as S.Schema; + +export interface DeleteContractResponse {} +export const DeleteContractResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteContractResponse", +}) as any as S.Schema; + +export interface DeleteControlRequest { + controlId: string; +} +export const DeleteControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ method: "DELETE", uri: "/controls/{controlId}", code: 200 }), + ), +).annotate({ + identifier: "DeleteControlRequest", +}) as any as S.Schema; + +export interface DeleteControlResponse {} +export const DeleteControlResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteControlResponse", +}) as any as S.Schema; + +export interface DeleteCustomerTrustAccountRequest { + accountId: string; +} +export const DeleteCustomerTrustAccountRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + accountId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/customer-trust/accounts/{accountId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteCustomerTrustAccountRequest", +}) as any as S.Schema; + +export interface DeleteCustomerTrustAccountResponse {} +export const DeleteCustomerTrustAccountResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteCustomerTrustAccountResponse", +}) as any as S.Schema; + +export interface DeleteDocumentRequest { + documentId: string; +} +export const DeleteDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ method: "DELETE", uri: "/documents/{documentId}", code: 200 }), + ), +).annotate({ + identifier: "DeleteDocumentRequest", +}) as any as S.Schema; + +export interface DeleteDocumentResponse {} +export const DeleteDocumentResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteDocumentResponse", +}) as any as S.Schema; + +export interface DeleteDocumentForcontrolRequest { + controlId: string; + documentId: string; +} +export const DeleteDocumentForcontrolRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String.pipe(T.Label()), + documentId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/controls/{controlId}/documents/{documentId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteDocumentForcontrolRequest", +}) as any as S.Schema; + +export interface DeleteDocumentForcontrolResponse {} +export const DeleteDocumentForcontrolResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteDocumentForcontrolResponse", +}) as any as S.Schema; + +export interface DeleteFileForDocumentRequest { + documentId: string; + uploadedFileId: string; +} +export const DeleteFileForDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + uploadedFileId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/documents/{documentId}/uploads/{uploadedFileId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteFileForDocumentRequest", +}) as any as S.Schema; + +export interface DeleteFileForDocumentResponse {} +export const DeleteFileForDocumentResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteFileForDocumentResponse", +}) as any as S.Schema; + +export interface DeleteFindingByIdRequest { + vendorId: string; + findingId: string; +} +export const DeleteFindingByIdRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + findingId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/vendors/{vendorId}/findings/{findingId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteFindingByIdRequest", +}) as any as S.Schema; + +export interface DeleteFindingByIdResponse {} +export const DeleteFindingByIdResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteFindingByIdResponse", +}) as any as S.Schema; + +export interface DeleteKnowledgeBaseResourceRequest { + id: string; +} +export const DeleteKnowledgeBaseResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/knowledge-base/resources/{id}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteKnowledgeBaseResourceRequest", +}) as any as S.Schema; + +export interface DeleteKnowledgeBaseResourceResponse {} +export const DeleteKnowledgeBaseResourceResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteKnowledgeBaseResourceResponse", +}) as any as S.Schema; + +export interface DeleteLinkForDocumentRequest { + documentId: string; + linkId: string; +} +export const DeleteLinkForDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + linkId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/documents/{documentId}/links/{linkId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteLinkForDocumentRequest", +}) as any as S.Schema; + +export interface DeleteLinkForDocumentResponse {} +export const DeleteLinkForDocumentResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteLinkForDocumentResponse", +}) as any as S.Schema; + +export interface DeleteQuestionnaireRequest { + questionnaireId: string; +} +export const DeleteQuestionnaireRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaireId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/customer-trust/questionnaires/{questionnaireId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteQuestionnaireRequest", +}) as any as S.Schema; + +export interface DeleteQuestionnaireResponse {} +export const DeleteQuestionnaireResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteQuestionnaireResponse", +}) as any as S.Schema; + +export interface DeleteRiskScenarioControlRequest { + riskScenarioId: string; + controlId: string; +} +export const DeleteRiskScenarioControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + riskScenarioId: S.String.pipe(T.Label()), + controlId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/risk-scenarios/{riskScenarioId}/controls/{controlId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteRiskScenarioControlRequest", +}) as any as S.Schema; + +export interface DeleteRiskScenarioControlResponse {} +export const DeleteRiskScenarioControlResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteRiskScenarioControlResponse", +}) as any as S.Schema; + +export interface DeleteSecurityReviewDocumentByIdRequest { + vendorId: string; + securityReviewId: string; + documentId: string; +} +export const DeleteSecurityReviewDocumentByIdRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + securityReviewId: S.String.pipe(T.Label()), + documentId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/vendors/{vendorId}/security-reviews/{securityReviewId}/documents/{documentId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteSecurityReviewDocumentByIdRequest", +}) as any as S.Schema; + +export interface DeleteSecurityReviewDocumentByIdResponse {} +export const DeleteSecurityReviewDocumentByIdResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "DeleteSecurityReviewDocumentByIdResponse", +}) as any as S.Schema; + +export interface DeleteTestForControlRequest { + controlId: string; + testId: string; +} +export const DeleteTestForControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String.pipe(T.Label()), + testId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/controls/{controlId}/tests/{testId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTestForControlRequest", +}) as any as S.Schema; + +export interface DeleteTestForControlResponse {} +export const DeleteTestForControlResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteTestForControlResponse", +}) as any as S.Schema; + +export interface DeleteTrustCenterControlRequest { + slugId: string; + controlId: string; +} +export const DeleteTrustCenterControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + controlId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/controls/{controlId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTrustCenterControlRequest", +}) as any as S.Schema; + +export interface DeleteTrustCenterControlResponse {} +export const DeleteTrustCenterControlResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteTrustCenterControlResponse", +}) as any as S.Schema; + +export interface DeleteTrustCenterControlCategoryRequest { + slugId: string; + categoryId: string; +} +export const DeleteTrustCenterControlCategoryRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + categoryId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/control-categories/{categoryId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTrustCenterControlCategoryRequest", +}) as any as S.Schema; + +export interface DeleteTrustCenterControlCategoryResponse {} +export const DeleteTrustCenterControlCategoryResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "DeleteTrustCenterControlCategoryResponse", +}) as any as S.Schema; + +export interface DeleteTrustCenterFaqRequest { + slugId: string; + faqId: string; +} +export const DeleteTrustCenterFaqRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + faqId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/faqs/{faqId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTrustCenterFaqRequest", +}) as any as S.Schema; + +export interface DeleteTrustCenterFaqResponse {} +export const DeleteTrustCenterFaqResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteTrustCenterFaqResponse", +}) as any as S.Schema; + +export interface DeleteTrustCenterFaqCategoryRequest { + slugId: string; + categoryId: string; +} +export const DeleteTrustCenterFaqCategoryRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + categoryId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/faq-categories/{categoryId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTrustCenterFaqCategoryRequest", +}) as any as S.Schema; + +export interface DeleteTrustCenterFaqCategoryResponse {} +export const DeleteTrustCenterFaqCategoryResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "DeleteTrustCenterFaqCategoryResponse", +}) as any as S.Schema; + +export interface DeleteTrustCenterResourceRequest { + slugId: string; + resourceId: string; +} +export const DeleteTrustCenterResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + resourceId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/resources/{resourceId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTrustCenterResourceRequest", +}) as any as S.Schema; + +export interface DeleteTrustCenterResourceResponse {} +export const DeleteTrustCenterResourceResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteTrustCenterResourceResponse", +}) as any as S.Schema; + +export interface DeleteTrustCenterResourceCategoryRequest { + slugId: string; + categoryId: string; +} +export const DeleteTrustCenterResourceCategoryRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + categoryId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/resource-categories/{categoryId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTrustCenterResourceCategoryRequest", +}) as any as S.Schema; + +export interface DeleteTrustCenterResourceCategoryResponse {} +export const DeleteTrustCenterResourceCategoryResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "DeleteTrustCenterResourceCategoryResponse", + }) as any as S.Schema; + +export interface DeleteTrustCenterSubprocessorRequest { + slugId: string; + subprocessorId: string; +} +export const DeleteTrustCenterSubprocessorRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + subprocessorId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/subprocessors/{subprocessorId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTrustCenterSubprocessorRequest", +}) as any as S.Schema; + +export interface DeleteTrustCenterSubprocessorResponse {} +export const DeleteTrustCenterSubprocessorResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "DeleteTrustCenterSubprocessorResponse", +}) as any as S.Schema; + +export interface DeleteTrustCenterSubscriberRequest { + slugId: string; + subscriberId: string; +} +export const DeleteTrustCenterSubscriberRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + subscriberId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/subscribers/{subscriberId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTrustCenterSubscriberRequest", +}) as any as S.Schema; + +export interface DeleteTrustCenterSubscriberResponse {} +export const DeleteTrustCenterSubscriberResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteTrustCenterSubscriberResponse", +}) as any as S.Schema; + +export interface DeleteTrustCenterSubscriberGroupRequest { + slugId: string; + subscriberGroupId: string; +} +export const DeleteTrustCenterSubscriberGroupRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + subscriberGroupId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/subscriber-groups/{subscriberGroupId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTrustCenterSubscriberGroupRequest", +}) as any as S.Schema; + +export interface DeleteTrustCenterSubscriberGroupResponse {} +export const DeleteTrustCenterSubscriberGroupResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "DeleteTrustCenterSubscriberGroupResponse", +}) as any as S.Schema; + +export interface DeleteTrustCenterUpdateRequest { + slugId: string; + updateId: string; +} +export const DeleteTrustCenterUpdateRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + updateId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/updates/{updateId}", + code: 200, + }), + ), +).annotate({ + identifier: "DeleteTrustCenterUpdateRequest", +}) as any as S.Schema; + +export interface DeleteTrustCenterUpdateResponse {} +export const DeleteTrustCenterUpdateResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "DeleteTrustCenterUpdateResponse", +}) as any as S.Schema; + +export interface DenyTrustCenterAccessRequestRequest { + slugId: string; + accessRequestId: string; + /** Reason for denying the access request. */ + reason?: string; +} +export const DenyTrustCenterAccessRequestRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + accessRequestId: S.String.pipe(T.Label()), + reason: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/access-requests/{accessRequestId}/deny", + code: 200, + }), + ), +).annotate({ + identifier: "DenyTrustCenterAccessRequestRequest", +}) as any as S.Schema; + +export interface DenyTrustCenterAccessRequestResponse {} +export const DenyTrustCenterAccessRequestResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "DenyTrustCenterAccessRequestResponse", +}) as any as S.Schema; + +export interface GetAnswerLibraryEntryRequest { + id: string; +} +export const GetAnswerLibraryEntryRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/knowledge-base/answer-library/{id}", + code: 200, + }), + ), +).annotate({ + identifier: "GetAnswerLibraryEntryRequest", +}) as any as S.Schema; + +export interface GetAssessmentByIdRequest { + vendorId: string; + assessmentId: string; +} +export const GetAssessmentByIdRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + assessmentId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/vendors/{vendorId}/assessments/{assessmentId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetAssessmentByIdRequest", +}) as any as S.Schema; + +/** The lifecycle status of an assessment: - NOT_STARTED: The assessment has not yet been started. - IN_PROGRESS: The assessment is underway. - COMPLETED: The assessment has been completed. */ +export type AssessmentStatus = "NOT_STARTED" | "IN_PROGRESS" | "COMPLETED"; +export const AssessmentStatus = /*@__PURE__*/ S.String; + +/** The current decision made for an assessment: - APPROVED: The assessment has been approved. - NOT_APPROVED: The assessment has been marked not approved. - CONDITIONALLY_APPROVED: The assessment has been conditionally approved. */ +export type AssessmentDecision = + | "APPROVED" + | "NOT_APPROVED" + | "CONDITIONALLY_APPROVED"; +export const AssessmentDecision = /*@__PURE__*/ S.String; + +/** An object containing information about the decision of the assessment. */ +export interface VendorAssessmentDecision { + /** Comments about the assessment decision. */ + comments: string | null; + /** The timestamp of when the assessment decision was last set. */ + lastUpdatedAt: string; + /** The status of the current decision. */ + status: AssessmentDecision; +} +export const VendorAssessmentDecision = /*@__PURE__*/ S.suspend(() => + S.Struct({ + comments: S.NullOr(S.String), + lastUpdatedAt: S.String, + status: AssessmentDecision, + }), +).annotate({ + identifier: "VendorAssessmentDecision", +}) as any as S.Schema; + +export interface AssessmentType { + /** Unique identifier for the assessment type. */ + id: string; + /** Display name of the assessment type. */ + name: string; + /** Description of the assessment type, if set. */ + description: string | null; +} +export const AssessmentType = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + description: S.NullOr(S.String), + }), +).annotate({ identifier: "AssessmentType" }) as any as S.Schema; + +export type AssessmentOwnerType = "USER" | "TEAM"; +export const AssessmentOwnerType = /*@__PURE__*/ S.String; + +export interface AssessmentOwner { + /** Unique identifier for the owner. */ + id: string; + /** The type of actor that owns this assessment. */ + type: AssessmentOwnerType; + /** Display name of the owner, if available. */ + displayName: string | null; + /** Email of the owner. Populated for USER owners, null for TEAM owners. */ + email: string | null; +} +export const AssessmentOwner = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + type: AssessmentOwnerType, + displayName: S.NullOr(S.String), + email: S.NullOr(S.String), + }), +).annotate({ + identifier: "AssessmentOwner", +}) as any as S.Schema; + +export interface VendorAssessment { + /** Unique identifier for the assessment. */ + id: string; + /** Unique identifier for the vendor. */ + vendorId: string; + /** The lifecycle status of the assessment. */ + status: AssessmentStatus; + /** The Vanta user ID of the person who completed this assessment. */ + completedByUserId: string | null; + /** The timestamp of when the assessment was started. */ + startDate: string | null; + /** The timestamp of when the assessment is due. */ + dueDate: string | null; + /** A manual override timestamp of when the assessment is due. */ + overrideDueDate: string | null; + /** The timestamp of when the assessment was marked as completed. */ + completionDate: string | null; + /** The timestamp of when the assessment was created. */ + createdDate: string; + /** An object containing information about the decision of the assessment. */ + decision: VendorAssessmentDecision | null; + /** The assessment type for this assessment. */ + assessmentType: AssessmentType; + /** The owner of this assessment, if assigned. */ + owner: AssessmentOwner | null; +} +export const VendorAssessment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + vendorId: S.String, + status: AssessmentStatus, + completedByUserId: S.NullOr(S.String), + startDate: S.NullOr(S.String), + dueDate: S.NullOr(S.String), + overrideDueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + createdDate: S.String, + decision: S.NullOr(VendorAssessmentDecision), + assessmentType: AssessmentType, + owner: S.NullOr(AssessmentOwner), + }), +).annotate({ + identifier: "VendorAssessment", +}) as any as S.Schema; + +export type GetAssessmentsByVendorIdRequestTypeIdMatchesAnyList = Array; +export const GetAssessmentsByVendorIdRequestTypeIdMatchesAnyList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export type GetAssessmentsByVendorIdRequestStatusMatchesAnyList = Array< + AssessmentStatus | (string & {}) +>; +export const GetAssessmentsByVendorIdRequestStatusMatchesAnyList = + /*@__PURE__*/ S.Array( + AssessmentStatus, + ) as any as S.Schema; + +export interface GetAssessmentsByVendorIdRequest { + vendorId: string; + pageSize?: number; + pageCursor?: string; + /** Filter assessments to any of the given assessment type IDs */ + typeIdMatchesAny?: GetAssessmentsByVendorIdRequestTypeIdMatchesAnyList; + /** Filter assessments to any of the given statuses */ + statusMatchesAny?: GetAssessmentsByVendorIdRequestStatusMatchesAnyList; +} +export const GetAssessmentsByVendorIdRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + typeIdMatchesAny: S.optional( + GetAssessmentsByVendorIdRequestTypeIdMatchesAnyList.pipe(T.Query()), + ), + statusMatchesAny: S.optional( + GetAssessmentsByVendorIdRequestStatusMatchesAnyList.pipe(T.Query()), + ), + }).pipe( + T.Http({ + method: "GET", + uri: "/vendors/{vendorId}/assessments", + code: 200, + }), + ), +).annotate({ + identifier: "GetAssessmentsByVendorIdRequest", +}) as any as S.Schema; + +export type PaginatedResponseVendorAssessmentResultsDataList = + Array; +export const PaginatedResponseVendorAssessmentResultsDataList = + /*@__PURE__*/ S.Array( + VendorAssessment, + ) as any as S.Schema; + +/** Provides information about the pagination of a dataset. */ +export interface PageInfo { + /** The cursor that points to the end of the current page, or null if there is no such cursor. */ + endCursor: string | null; + /** Indicates if there is another page after the current page. */ + hasNextPage: boolean; + /** Indicates if there is a page before the current page. */ + hasPreviousPage: boolean; + /** The cursor that points to the start of the current page, or null if there is no such cursor. */ + startCursor: string | null; +} +export const PageInfo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + endCursor: S.NullOr(S.String), + hasNextPage: S.Boolean, + hasPreviousPage: S.Boolean, + startCursor: S.NullOr(S.String), + }), +).annotate({ identifier: "PageInfo" }) as any as S.Schema; + +export interface PaginatedResponseVendorAssessmentResults { + data: PaginatedResponseVendorAssessmentResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseVendorAssessmentResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseVendorAssessmentResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseVendorAssessmentResults", +}) as any as S.Schema; + +export interface PaginatedResponseVendorAssessment { + results: PaginatedResponseVendorAssessmentResults; +} +export const PaginatedResponseVendorAssessment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseVendorAssessmentResults, + }), +).annotate({ + identifier: "PaginatedResponseVendorAssessment", +}) as any as S.Schema; + +export interface GetChatbotConversationMessagesRequest { + slugId: string; + conversationId: string; +} +export const GetChatbotConversationMessagesRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + conversationId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/chatbot/conversations/{conversationId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetChatbotConversationMessagesRequest", +}) as any as S.Schema; + +export type ChatbotMessageRole = "USER" | "ASSISTANT"; +export const ChatbotMessageRole = /*@__PURE__*/ S.String; + +/** Resource IDs referenced by this message. */ +export type TrustCenterChatbotMessageReferencesList = Array; +export const TrustCenterChatbotMessageReferencesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface TrustCenterChatbotMessage { + /** Unique identifier for the message. */ + id: string; + /** The role of the message sender. */ + role: ChatbotMessageRole; + /** The message content. */ + message: string; + /** Date and time the message was created. */ + createdAt: string; + /** Resource IDs referenced by this message. */ + references: TrustCenterChatbotMessageReferencesList; +} +export const TrustCenterChatbotMessage = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + role: ChatbotMessageRole, + message: S.String, + createdAt: S.String, + references: TrustCenterChatbotMessageReferencesList, + }), +).annotate({ + identifier: "TrustCenterChatbotMessage", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterChatbotMessageResultsList = + Array; +export const ArrayResponseTrustCenterChatbotMessageResultsList = + /*@__PURE__*/ S.Array( + TrustCenterChatbotMessage, + ) as any as S.Schema; + +export interface ArrayResponseTrustCenterChatbotMessage { + results: ArrayResponseTrustCenterChatbotMessageResultsList; +} +export const ArrayResponseTrustCenterChatbotMessage = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: ArrayResponseTrustCenterChatbotMessageResultsList, + }), +).annotate({ + identifier: "ArrayResponseTrustCenterChatbotMessage", +}) as any as S.Schema; + +export interface GetConnectedIntegrationRequest { + /** Unique identifier of the integration */ + integrationId: string; +} +export const GetConnectedIntegrationRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ method: "GET", uri: "/integrations/{integrationId}", code: 200 }), + ), +).annotate({ + identifier: "GetConnectedIntegrationRequest", +}) as any as S.Schema; + +/** A list of string identifiers for the resource types ingested by the Integration. */ +export type IntegrationResourceKindsList = Array; +export const IntegrationResourceKindsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface Connection { + /** The unique identifier for the Connection. */ + connectionId: string; + /** Whether the Connection has been disabled by Vanta. */ + isDisabled: boolean; + /** An error message that may accompany disabled Connections. */ + connectionErrorMessage: string | null; +} +export const Connection = /*@__PURE__*/ S.suspend(() => + S.Struct({ + connectionId: S.String, + isDisabled: S.Boolean, + connectionErrorMessage: S.NullOr(S.String), + }), +).annotate({ identifier: "Connection" }) as any as S.Schema; + +/** A list of installed Connections. */ +export type IntegrationConnectionsList = Array; +export const IntegrationConnectionsList = /*@__PURE__*/ S.Array( + Connection, +) as any as S.Schema; + +export interface Integration { + /** A unique identifier for the Integration. */ + integrationId: string; + /** The Integration's display name. */ + displayName: string; + /** A list of string identifiers for the resource types ingested by the Integration. */ + resourceKinds: IntegrationResourceKindsList; + /** A list of installed Connections. */ + connections: IntegrationConnectionsList; +} +export const Integration = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String, + displayName: S.String, + resourceKinds: IntegrationResourceKindsList, + connections: IntegrationConnectionsList, + }), +).annotate({ identifier: "Integration" }) as any as S.Schema; + +export interface GetContractRequest { + contractId: string; +} +export const GetContractRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + contractId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/contracts/{contractId}", code: 200 })), +).annotate({ + identifier: "GetContractRequest", +}) as any as S.Schema; + +export interface Contract { + /** Unique identifier for the contract. */ + id: string; + /** Stable source-system identifier for the contract, if any. */ + externalId: string | null; + /** Name of the contract. */ + name: string; + /** The ID of the customer trust account this contract is linked to, if any. */ + customerTrustAccountId: string | null; + /** Date this contract was executed. */ + executedDate: string | null; + /** Date this contract was created in Vanta. */ + creationDate: string; +} +export const Contract = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + externalId: S.NullOr(S.String), + name: S.String, + customerTrustAccountId: S.NullOr(S.String), + executedDate: S.NullOr(S.String), + creationDate: S.String, + }), +).annotate({ identifier: "Contract" }) as any as S.Schema; + +export interface GetControlRequest { + controlId: string; +} +export const GetControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/controls/{controlId}", code: 200 })), +).annotate({ + identifier: "GetControlRequest", +}) as any as S.Schema; + +/** The security domains that the control belongs to. */ +export type ControlDetailDomainsList = Array; +export const ControlDetailDomainsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** The control's custom field values, if control custom fields is included in your Vanta instance. */ +export type ControlDetailCustomFieldsList = Array; +export const ControlDetailCustomFieldsList = /*@__PURE__*/ S.Array( + CustomField, +) as any as S.Schema; + +export type ControlStatus = + | "NO_EVIDENCE_MAPPED" + | "NOT_STARTED" + | "IN_PROGRESS" + | "COMPLETED"; +export const ControlStatus = /*@__PURE__*/ S.String; + +export interface ControlDetail { + /** The control's unique ID. */ + id: string; + /** The control's external ID. */ + externalId: string | null; + /** The control's name. */ + name: string; + /** The control's description. */ + description: string; + /** The control's source, either "VANTA" or "CUSTOM". */ + source: ControlSource; + /** The security domains that the control belongs to. */ + domains: ControlDetailDomainsList; + /** The control's owner. */ + owner: Owner | null; + /** The control's GDPR role, if the control is a GDPR control. */ + role?: string | null; + /** The control's custom field values, if control custom fields is included in your Vanta instance. */ + customFields: ControlDetailCustomFieldsList; + /** When the control was created. Returns null for Vanta library controls. */ + creationDate: string | null; + /** When the control was last modified. Returns null for Vanta library controls. */ + modificationDate: string | null; + /** The number of passing documents that are linked to the control. */ + numDocumentsPassing: number; + /** The total number of documents that are linked to the control. */ + numDocumentsTotal: number; + /** The number of passing tests that are linked to the control. */ + numTestsPassing: number; + /** The total number of tests that are linked to the control. */ + numTestsTotal: number; + /** The status of the control as determined by number of passing tests and documents. */ + status: ControlStatus; + /** A user created note for the control. */ + note: string | null; +} +export const ControlDetail = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + externalId: S.NullOr(S.String), + name: S.String, + description: S.String, + source: ControlSource, + domains: ControlDetailDomainsList, + owner: S.NullOr(Owner), + role: S.optional(S.NullOr(S.String)), + customFields: ControlDetailCustomFieldsList, + creationDate: S.NullOr(S.String), + modificationDate: S.NullOr(S.String), + numDocumentsPassing: S.Number, + numDocumentsTotal: S.Number, + numTestsPassing: S.Number, + numTestsTotal: S.Number, + status: ControlStatus, + note: S.NullOr(S.String), + }), +).annotate({ identifier: "ControlDetail" }) as any as S.Schema; + +export interface GetCustomerTrustAccountRequest { + accountId: string; +} +export const GetCustomerTrustAccountRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + accountId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/customer-trust/accounts/{accountId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetCustomerTrustAccountRequest", +}) as any as S.Schema; + +export interface GetDocumentRequest { + documentId: string; +} +export const GetDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/documents/{documentId}", code: 200 })), +).annotate({ + identifier: "GetDocumentRequest", +}) as any as S.Schema; + +export interface DocumentDetailDeactivatedStatus { + /** The date the document was deactivated. */ + creationDate: string; + /** The date the deactivation expires. */ + expiration: string | null; + /** The reason for the document was deactivated. */ + reason: string | null; + /** Determines whether or not the document is deactivated. */ + isDeactivated: boolean; +} +export const DocumentDetailDeactivatedStatus = /*@__PURE__*/ S.suspend(() => + S.Struct({ + creationDate: S.String, + expiration: S.NullOr(S.String), + reason: S.NullOr(S.String), + isDeactivated: S.Boolean, + }), +).annotate({ + identifier: "DocumentDetailDeactivatedStatus", +}) as any as S.Schema; + +/** A list of the emails subscribed to the document. */ +export type DocumentDetailSubscribersList = Array; +export const DocumentDetailSubscribersList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface DocumentDetail { + /** The document's unique ID. */ + id: string; + /** The user ID of the document's owner. */ + ownerId: string | null; + /** The document's category. */ + category: DocumentAndTestCategory; + /** The document's description. */ + description: string; + /** Determines whether or not the document is sensitive. */ + isSensitive: boolean; + /** The document's title. */ + title: string; + /** The document's status. */ + uploadStatus: DocumentStatus; + /** The date the document's uploadStatus changed. */ + uploadStatusDate: string | null; + /** The URL to view the document within Vanta. */ + url: string | null; + deactivatedStatus: DocumentDetailDeactivatedStatus; + /** A user note for the document. */ + note: string | null; + /** When the document needs to be renewed. */ + nextRenewalDate: string | null; + /** How often a document must be renewed. */ + renewalCadence: RecurrenceDuration; + /** The number of day ahead of the renewal date to send a reminder. */ + reminderWindow: ReminderWindow | null; + /** A list of the emails subscribed to the document. */ + subscribers: DocumentDetailSubscribersList; +} +export const DocumentDetail = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + ownerId: S.NullOr(S.String), + category: DocumentAndTestCategory, + description: S.String, + isSensitive: S.Boolean, + title: S.String, + uploadStatus: DocumentStatus, + uploadStatusDate: S.NullOr(S.String), + url: S.NullOr(S.String), + deactivatedStatus: DocumentDetailDeactivatedStatus, + note: S.NullOr(S.String), + nextRenewalDate: S.NullOr(S.String), + renewalCadence: RecurrenceDuration, + reminderWindow: S.NullOr(ReminderWindow), + subscribers: DocumentDetailSubscribersList, + }), +).annotate({ identifier: "DocumentDetail" }) as any as S.Schema; + +export interface GetFrameworkRequest { + frameworkId: string; +} +export const GetFrameworkRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + frameworkId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ method: "GET", uri: "/frameworks/{frameworkId}", code: 200 }), + ), +).annotate({ + identifier: "GetFrameworkRequest", +}) as any as S.Schema; + +export interface FrameworkRequirementCategoryRequirementsItemControlsItem { + /** The control's description. */ + description: string; + /** The control's name. */ + name: string; + /** The control's external ID. */ + externalId: string | null; + /** The control's unique ID. */ + id: string; +} +export const FrameworkRequirementCategoryRequirementsItemControlsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + description: S.String, + name: S.String, + externalId: S.NullOr(S.String), + id: S.String, + }), + ).annotate({ + identifier: "FrameworkRequirementCategoryRequirementsItemControlsItem", + }) as any as S.Schema; + +/** The requirement's list of controls */ +export type FrameworkRequirementCategoryRequirementsItemControlsList = + Array; +export const FrameworkRequirementCategoryRequirementsItemControlsList = + /*@__PURE__*/ S.Array( + FrameworkRequirementCategoryRequirementsItemControlsItem, + ) as any as S.Schema; + +export interface FrameworkRequirementCategoryRequirementsItem { + /** The requirement's list of controls */ + controls: FrameworkRequirementCategoryRequirementsItemControlsList; + /** The requirement's description */ + description: string | null; + /** The requirement's short name. */ + shorthand: string | null; + /** The requirement's name. */ + name: string; + /** The requirement's unique ID. */ + id: string; +} +export const FrameworkRequirementCategoryRequirementsItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + controls: FrameworkRequirementCategoryRequirementsItemControlsList, + description: S.NullOr(S.String), + shorthand: S.NullOr(S.String), + name: S.String, + id: S.String, + }), + ).annotate({ + identifier: "FrameworkRequirementCategoryRequirementsItem", + }) as any as S.Schema; + +export type FrameworkRequirementCategoryRequirementsList = + Array; +export const FrameworkRequirementCategoryRequirementsList = + /*@__PURE__*/ S.Array( + FrameworkRequirementCategoryRequirementsItem, + ) as any as S.Schema; + +export interface FrameworkRequirementCategory { + /** The framework's requiremet category unique ID. */ + id: string; + /** The framework's requiremet category name. */ + name: string; + /** The framework's short name. */ + shorthand: string | null; + requirements: FrameworkRequirementCategoryRequirementsList; +} +export const FrameworkRequirementCategory = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + shorthand: S.NullOr(S.String), + requirements: FrameworkRequirementCategoryRequirementsList, + }), +).annotate({ + identifier: "FrameworkRequirementCategory", +}) as any as S.Schema; + +/** The famework's list of requirement categories. */ +export type FrameworkDetailRequirementCategoriesList = + Array; +export const FrameworkDetailRequirementCategoriesList = /*@__PURE__*/ S.Array( + FrameworkRequirementCategory, +) as any as S.Schema; + +export interface FrameworkDetail { + /** The framework's unique ID. */ + id: string; + /** The framework's display name. */ + displayName: string; + /** The short version of the framework's display name. */ + shorthandName: string; + /** The framework's description. */ + description: string; + /** The number of completed controls in the framework. */ + numControlsCompleted: number; + /** The total number of controls in the framework. */ + numControlsTotal: number; + /** The number of passing documents in the framework. */ + numDocumentsPassing: number; + /** The total number of documents in the framework. */ + numDocumentsTotal: number; + /** The number of passing tests in the framework. */ + numTestsPassing: number; + /** The total number of tests in the framework. */ + numTestsTotal: number; + /** The famework's list of requirement categories. */ + requirementCategories: FrameworkDetailRequirementCategoriesList; +} +export const FrameworkDetail = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.String, + shorthandName: S.String, + description: S.String, + numControlsCompleted: S.Number, + numControlsTotal: S.Number, + numDocumentsPassing: S.Number, + numDocumentsTotal: S.Number, + numTestsPassing: S.Number, + numTestsTotal: S.Number, + requirementCategories: FrameworkDetailRequirementCategoriesList, + }), +).annotate({ + identifier: "FrameworkDetail", +}) as any as S.Schema; + +export interface GetGroupRequest { + groupId: string; +} +export const GetGroupRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + groupId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/groups/{groupId}", code: 200 })), +).annotate({ + identifier: "GetGroupRequest", +}) as any as S.Schema; + +export interface GetGroupMembersRequest { + groupId: string; +} +export const GetGroupMembersRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + groupId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ method: "GET", uri: "/groups/{groupId}/people", code: 200 }), + ), +).annotate({ + identifier: "GetGroupMembersRequest", +}) as any as S.Schema; + +export type GetGroupMembersResponseBodyList = Array; +export const GetGroupMembersResponseBodyList = /*@__PURE__*/ S.Array( + Person, +) as any as S.Schema; + +export type GetGroupMembersResponse = GetGroupMembersResponseBodyList; +export const GetGroupMembersResponse = /*@__PURE__*/ S.suspend(() => + GetGroupMembersResponseBodyList.pipe(T.RawResponseRoot()), +).annotate({ + identifier: "GetGroupMembersResponse", +}) as any as S.Schema; + +export interface GetIssueRequest { + issueId: string; +} +export const GetIssueRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + issueId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/issues/{issueId}", code: 200 })), +).annotate({ + identifier: "GetIssueRequest", +}) as any as S.Schema; + +export type ActorType = "USER" | "APPLICATION" | "WORKFLOW_GENERATED"; +export const ActorType = /*@__PURE__*/ S.String; + +export interface Actor { + actorType: ActorType; + actorId: string; +} +export const Actor = /*@__PURE__*/ S.suspend(() => + S.Struct({ + actorType: ActorType, + actorId: S.String, + }), +).annotate({ identifier: "Actor" }) as any as S.Schema; + +export type OwnerType = "USER" | "TEAM"; +export const OwnerType = /*@__PURE__*/ S.String; + +export interface IssueOwner { + ownerType: OwnerType; + ownerId: string; +} +export const IssueOwner = /*@__PURE__*/ S.suspend(() => + S.Struct({ + ownerType: OwnerType, + ownerId: S.String, + }), +).annotate({ identifier: "IssueOwner" }) as any as S.Schema; + +export type StandardIssueOwnersList = Array; +export const StandardIssueOwnersList = /*@__PURE__*/ S.Array( + IssueOwner, +) as any as S.Schema; + +export type IssueSeverity = + | "CRITICAL" + | "HIGH" + | "MEDIUM" + | "LOW" + | "NO_SEVERITY"; +export const IssueSeverity = /*@__PURE__*/ S.String; + +export type IssueStatus = "NOT_STARTED" | "IN_PROGRESS" | "CLOSED"; +export const IssueStatus = /*@__PURE__*/ S.String; + +export type SourceType = + | "AUDIT" + | "AUDIT_EXTERNAL" + | "INCIDENT" + | "EXTERNAL_PARTY" + | "SELF_ASSESSMENT" + | "OTHER"; +export const SourceType = /*@__PURE__*/ S.String; + +export interface Source { + sourceType: SourceType; + sourceId?: string; +} +export const Source = /*@__PURE__*/ S.suspend(() => + S.Struct({ + sourceType: SourceType, + sourceId: S.optional(S.String), + }), +).annotate({ identifier: "Source" }) as any as S.Schema; + +export type ClosedReason = "RESOLVED" | "DUPLICATE" | "ACCEPTED" | "OTHER"; +export const ClosedReason = /*@__PURE__*/ S.String; + +export interface ClosedMetadata { + reason: ClosedReason; + comment: string; + closedAt: string; +} +export const ClosedMetadata = /*@__PURE__*/ S.suspend(() => + S.Struct({ + reason: ClosedReason, + comment: S.String, + closedAt: S.String, + }), +).annotate({ identifier: "ClosedMetadata" }) as any as S.Schema; + +export type StandardIssueMappedControlIdsList = Array; +export const StandardIssueMappedControlIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type StandardIssueMappedRiskScenarioIdsList = Array; +export const StandardIssueMappedRiskScenarioIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type StandardIssueMappedPolicyIdsList = Array; +export const StandardIssueMappedPolicyIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type IssueCustomFieldValueCase1List = Array; +export const IssueCustomFieldValueCase1List = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type IssueCustomFieldValue = string | IssueCustomFieldValueCase1List; +export const IssueCustomFieldValue = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export interface IssueCustomField { + label: string; + value: IssueCustomFieldValue; +} +export const IssueCustomField = /*@__PURE__*/ S.suspend(() => + S.Struct({ + label: S.String, + value: IssueCustomFieldValue, + }), +).annotate({ + identifier: "IssueCustomField", +}) as any as S.Schema; + +export type StandardIssueCustomFieldsList = Array; +export const StandardIssueCustomFieldsList = /*@__PURE__*/ S.Array( + IssueCustomField, +) as any as S.Schema; + +/** Extract from T those types that are assignable to U */ +export type ExtractIssueTemplateSTANDARDISSUE = "STANDARD_ISSUE"; +export const ExtractIssueTemplateSTANDARDISSUE = /*@__PURE__*/ S.String; + +export type StandardIssueType = + | "AREA_OF_CONCERN" + | "MAJOR_NONCONFORMITY" + | "MINOR_NONCONFORMITY" + | "OPP_FOR_IMPROVEMENT" + | "EXCEPTION" + | "PROCESS_FOR_IMPROVEMENT"; +export const StandardIssueType = /*@__PURE__*/ S.String; + +export interface StandardIssue { + id: string; + readableIssueId: string; + createdDate: string; + createdBy: Actor; + lastModifiedBy: Actor; + lastModifiedDate: string; + title: string; + description: string; + owners: StandardIssueOwnersList; + severity: IssueSeverity; + status: IssueStatus; + rootCause: string | null; + correctiveAction: string | null; + dueDate: string | null; + source: Source | null; + controlDomain: string | null; + closedMetadata: ClosedMetadata | null; + detectedDate: string; + mappedControlIds: StandardIssueMappedControlIdsList; + mappedRiskScenarioIds: StandardIssueMappedRiskScenarioIdsList; + mappedPolicyIds: StandardIssueMappedPolicyIdsList; + customFields: StandardIssueCustomFieldsList; + template: ExtractIssueTemplateSTANDARDISSUE; + type: StandardIssueType | null; +} +export const StandardIssue = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + readableIssueId: S.String, + createdDate: S.String, + createdBy: Actor, + lastModifiedBy: Actor, + lastModifiedDate: S.String, + title: S.String, + description: S.String, + owners: StandardIssueOwnersList, + severity: IssueSeverity, + status: IssueStatus, + rootCause: S.NullOr(S.String), + correctiveAction: S.NullOr(S.String), + dueDate: S.NullOr(S.String), + source: S.NullOr(Source), + controlDomain: S.NullOr(S.String), + closedMetadata: S.NullOr(ClosedMetadata), + detectedDate: S.String, + mappedControlIds: StandardIssueMappedControlIdsList, + mappedRiskScenarioIds: StandardIssueMappedRiskScenarioIdsList, + mappedPolicyIds: StandardIssueMappedPolicyIdsList, + customFields: StandardIssueCustomFieldsList, + template: ExtractIssueTemplateSTANDARDISSUE, + type: S.NullOr(StandardIssueType), + }), +).annotate({ identifier: "StandardIssue" }) as any as S.Schema; + +export type StandardPOAMOwnersList = Array; +export const StandardPOAMOwnersList = /*@__PURE__*/ S.Array( + IssueOwner, +) as any as S.Schema; + +export type StandardPOAMMappedControlIdsList = Array; +export const StandardPOAMMappedControlIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type StandardPOAMMappedRiskScenarioIdsList = Array; +export const StandardPOAMMappedRiskScenarioIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type StandardPOAMMappedPolicyIdsList = Array; +export const StandardPOAMMappedPolicyIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type StandardPOAMCustomFieldsList = Array; +export const StandardPOAMCustomFieldsList = /*@__PURE__*/ S.Array( + IssueCustomField, +) as any as S.Schema; + +/** Extract from T those types that are assignable to U */ +export type ExtractIssueTemplateSTANDARDPOAM = "STANDARD_POAM"; +export const ExtractIssueTemplateSTANDARDPOAM = /*@__PURE__*/ S.String; + +export interface StandardPOAM { + id: string; + readableIssueId: string; + createdDate: string; + createdBy: Actor; + lastModifiedBy: Actor; + lastModifiedDate: string; + title: string; + description: string; + owners: StandardPOAMOwnersList; + severity: IssueSeverity; + status: IssueStatus; + rootCause: string | null; + correctiveAction: string | null; + dueDate: string | null; + source: Source | null; + controlDomain: string | null; + closedMetadata: ClosedMetadata | null; + detectedDate: string; + mappedControlIds: StandardPOAMMappedControlIdsList; + mappedRiskScenarioIds: StandardPOAMMappedRiskScenarioIdsList; + mappedPolicyIds: StandardPOAMMappedPolicyIdsList; + customFields: StandardPOAMCustomFieldsList; + template: ExtractIssueTemplateSTANDARDPOAM; + requiredResources: string | null; + systemsDescription: string | null; +} +export const StandardPOAM = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + readableIssueId: S.String, + createdDate: S.String, + createdBy: Actor, + lastModifiedBy: Actor, + lastModifiedDate: S.String, + title: S.String, + description: S.String, + owners: StandardPOAMOwnersList, + severity: IssueSeverity, + status: IssueStatus, + rootCause: S.NullOr(S.String), + correctiveAction: S.NullOr(S.String), + dueDate: S.NullOr(S.String), + source: S.NullOr(Source), + controlDomain: S.NullOr(S.String), + closedMetadata: S.NullOr(ClosedMetadata), + detectedDate: S.String, + mappedControlIds: StandardPOAMMappedControlIdsList, + mappedRiskScenarioIds: StandardPOAMMappedRiskScenarioIdsList, + mappedPolicyIds: StandardPOAMMappedPolicyIdsList, + customFields: StandardPOAMCustomFieldsList, + template: ExtractIssueTemplateSTANDARDPOAM, + requiredResources: S.NullOr(S.String), + systemsDescription: S.NullOr(S.String), + }), +).annotate({ identifier: "StandardPOAM" }) as any as S.Schema; + +export type Issue = StandardIssue | StandardPOAM; +export const Issue = /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type GetIssueResponse = Issue; +export const GetIssueResponse = /*@__PURE__*/ S.suspend(() => + Issue.pipe(T.RawResponseRoot()), +).annotate({ + identifier: "GetIssueResponse", +}) as any as S.Schema; + +export interface GetKnowledgeBaseResourceRequest { + id: string; +} +export const GetKnowledgeBaseResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String.pipe(T.Label()), + }).pipe( + T.Http({ method: "GET", uri: "/knowledge-base/resources/{id}", code: 200 }), + ), +).annotate({ + identifier: "GetKnowledgeBaseResourceRequest", +}) as any as S.Schema; + +/** Discriminated union over `type` of all resource kinds in the Trust Knowledge Base (currently FILE and URL). */ +export type TrustKnowledgeBaseResourceOutput = + | KnowledgeBaseDocumentResourceOutput + | KnowledgeBaseWebpageResourceOutput; +export const TrustKnowledgeBaseResourceOutput = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type GetKnowledgeBaseResourceResponse = TrustKnowledgeBaseResourceOutput; +export const GetKnowledgeBaseResourceResponse = /*@__PURE__*/ S.suspend(() => + TrustKnowledgeBaseResourceOutput.pipe(T.RawResponseRoot()), +).annotate({ + identifier: "GetKnowledgeBaseResourceResponse", +}) as any as S.Schema; + +export interface GetMonitoredComputerRequest { + computerId: string; +} +export const GetMonitoredComputerRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + computerId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/monitored-computers/{computerId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetMonitoredComputerRequest", +}) as any as S.Schema; + +/** The possible outcomes of a status check. The outcome can be one of the following: FAIL: The check is failing. IN_PROGRESS: The check needs further data from the given computer in order to evaluate. The field(s) needed from a computer to calculate the ComputerStatusOutcome were null. NA: The check is not applicable for the given computer. PASS: The check is passing. */ +export type ComputerStatusOutcome = "FAIL" | "IN_PROGRESS" | "NA" | "PASS"; +export const ComputerStatusOutcome = /*@__PURE__*/ S.String; + +/** The a status check for a computer. Representation for screenlock, diskEncryption, passwordManager, and antivirusInstallation. */ +export interface ComputerStatus { + /** The outcome of the status check. */ + outcome: ComputerStatusOutcome; +} +export const ComputerStatus = /*@__PURE__*/ S.suspend(() => + S.Struct({ + outcome: ComputerStatusOutcome, + }), +).annotate({ identifier: "ComputerStatus" }) as any as S.Schema; + +/** The possible types of the operating system. One of `mac_OS`, `linux`, or `windows`. */ +export type OperatingSystemType = "macOS" | "linux" | "windows"; +export const OperatingSystemType = /*@__PURE__*/ S.String; + +/** The computer's operating system type and version. */ +export interface OperatingSystem { + /** The type of the operating system. */ + type: OperatingSystemType; + /** The version of the operating system. */ + version: string | null; +} +export const OperatingSystem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: OperatingSystemType, + version: S.NullOr(S.String), + }), +).annotate({ + identifier: "OperatingSystem", +}) as any as S.Schema; + +export interface MonitoredComputer { + /** Unique identifier for the monitored computer. */ + id: string; + /** Hard-coded enums for Vanta-built integrations or application IDs for 3rd-party-built integrations. */ + integrationId: string; + /** Date of the computer's most recent report. */ + lastCheckDate: string | null; + /** Whether or not the computer has screenlock enabled. */ + screenlock: ComputerStatus; + /** Whether or not the computer's hard drive is encrypted. */ + diskEncryption: ComputerStatus; + /** Whether or not the computer has a password manager installed. */ + passwordManager: ComputerStatus; + /** Whether or not the computer has antivirus software installed. */ + antivirusInstallation: ComputerStatus; + /** The computer's operating system name and version. */ + operatingSystem: OperatingSystem | null; + /** The name, unique identifier, and email address of the computer's owner. */ + owner: Owner | null; + /** The serial number of the computer. This value may be null if it is not reported by the device. */ + serialNumber: string | null; + /** The universal device id of the computer. */ + udid: string | null; +} +export const MonitoredComputer = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + integrationId: S.String, + lastCheckDate: S.NullOr(S.String), + screenlock: ComputerStatus, + diskEncryption: ComputerStatus, + passwordManager: ComputerStatus, + antivirusInstallation: ComputerStatus, + operatingSystem: S.NullOr(OperatingSystem), + owner: S.NullOr(Owner), + serialNumber: S.NullOr(S.String), + udid: S.NullOr(S.String), + }), +).annotate({ + identifier: "MonitoredComputer", +}) as any as S.Schema; + +export interface GetPersonRequest { + personId: string; +} +export const GetPersonRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + personId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/people/{personId}", code: 200 })), +).annotate({ + identifier: "GetPersonRequest", +}) as any as S.Schema; + +export interface GetPolicyRequest { + policyId: string; +} +export const GetPolicyRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + policyId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/policies/{policyId}", code: 200 })), +).annotate({ + identifier: "GetPolicyRequest", +}) as any as S.Schema; + +export type PolicyStatus = "OK" | "NEEDS_REMEDIATION"; +export const PolicyStatus = /*@__PURE__*/ S.String; + +export type PolicyVersionStatus = + | "NOT_STARTED" + | "DRAFT" + | "PENDING_APPROVAL" + | "APPROVED" + | "RENEW_SOON" + | "EXPIRED"; +export const PolicyVersionStatus = /*@__PURE__*/ S.String; + +export interface PolicyLatestVersion { + /** The status of the policy's latest version. */ + status: PolicyVersionStatus; +} +export const PolicyLatestVersion = /*@__PURE__*/ S.suspend(() => + S.Struct({ + status: PolicyVersionStatus, + }), +).annotate({ + identifier: "PolicyLatestVersion", +}) as any as S.Schema; + +export type PolicyLocale = + | "CS" + | "CY" + | "DA" + | "DE" + | "EN" + | "ES" + | "FI" + | "FR" + | "HU" + | "IS" + | "IT" + | "JA" + | "KO" + | "NL" + | "NO" + | "NOT_SPECIFIED" + | "PL" + | "PT" + | "ET" + | "RO" + | "AR" + | "SK" + | "SV" + | "TR" + | "ZH"; +export const PolicyLocale = /*@__PURE__*/ S.String; + +export interface PolicyDocument { + /** The language of the policy document. */ + language: PolicyLocale | null; + /** The slug ID of the policy document. */ + slugId: string; + /** The URL of the policy document. */ + url: string; +} +export const PolicyDocument = /*@__PURE__*/ S.suspend(() => + S.Struct({ + language: S.NullOr(PolicyLocale), + slugId: S.String, + url: S.String, + }), +).annotate({ identifier: "PolicyDocument" }) as any as S.Schema; + +/** Available document versions for this policy, organized by language. */ +export type PolicyLatestApprovedVersionDocumentsList = Array; +export const PolicyLatestApprovedVersionDocumentsList = /*@__PURE__*/ S.Array( + PolicyDocument, +) as any as S.Schema; + +export interface PolicyLatestApprovedVersion { + /** The ID of the latest approved version of the policy. */ + versionId: string; + /** Available document versions for this policy, organized by language. */ + documents: PolicyLatestApprovedVersionDocumentsList; +} +export const PolicyLatestApprovedVersion = /*@__PURE__*/ S.suspend(() => + S.Struct({ + versionId: S.String, + documents: PolicyLatestApprovedVersionDocumentsList, + }), +).annotate({ + identifier: "PolicyLatestApprovedVersion", +}) as any as S.Schema; + +export interface Policy { + /** The policy's unique ID. */ + id: string; + /** The policy's name. */ + name: string; + /** The policy's description. */ + description: string; + /** The policy's current status. */ + status: PolicyStatus; + /** The policy's most recent date of approval, if applicable. */ + approvedAtDate: string | null; + /** The latest version of the policy. */ + latestVersion: PolicyLatestVersion; + /** The latest approved version of the policy, if available. */ + latestApprovedVersion: PolicyLatestApprovedVersion | null; +} +export const Policy = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + description: S.String, + status: PolicyStatus, + approvedAtDate: S.NullOr(S.String), + latestVersion: PolicyLatestVersion, + latestApprovedVersion: S.NullOr(PolicyLatestApprovedVersion), + }), +).annotate({ identifier: "Policy" }) as any as S.Schema; + +export interface GetQuestionnaireRequest { + questionnaireId: string; +} +export const GetQuestionnaireRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaireId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/customer-trust/questionnaires/{questionnaireId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetQuestionnaireRequest", +}) as any as S.Schema; + +export interface GetQuestionnaireExportRequest { + /** The unique identifier of the export job, returned from the POST endpoint. */ + id: string; +} +export const GetQuestionnaireExportRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/customer-trust/questionnaires/exports/{id}", + code: 200, + }), + ), +).annotate({ + identifier: "GetQuestionnaireExportRequest", +}) as any as S.Schema; + +/** Processing status of the export. - `"pending"`: Export is still being processed. - `"completed"`: Export finished successfully. Download URL is available. - `"failed"`: Export failed. See `errorMessage` for details. */ +export type CustomerTrustExportStatusResponseStatus = + | "pending" + | "completed" + | "failed"; +export const CustomerTrustExportStatusResponseStatus = /*@__PURE__*/ S.String; + +/** The output format of the exported file. */ +export type CustomerTrustExportStatusResponseFormat = "original" | "csv"; +export const CustomerTrustExportStatusResponseFormat = /*@__PURE__*/ S.String; + +/** Detailed status and result of a questionnaire export. When `status` is `"completed"`, the response includes a time-limited download URL. */ +export interface CustomerTrustExportStatusResponse { + /** Unique identifier for the export job. */ + id: string; + /** Processing status of the export. - `"pending"`: Export is still being processed. - `"completed"`: Export finished successfully. Download URL is available. - `"failed"`: Export failed. See `errorMessage` for details. */ + status: CustomerTrustExportStatusResponseStatus; + /** The output format of the exported file. */ + format: CustomerTrustExportStatusResponseFormat; + /** ISO 8601 timestamp indicating when the export was requested. */ + requestedAt: string; + /** ISO 8601 timestamp indicating when the export completed successfully. Only present when `status` is `"completed"`. */ + completedAt?: string; + /** Pre-signed URL for downloading the exported file. Valid for 24 hours from the time of this response. Only present when `status` is `"completed"`. */ + downloadUrl?: string; + /** ISO 8601 timestamp indicating when the download URL expires. After this time, request a new export. Only present when `status` is `"completed"`. */ + expiresAt?: string; + /** ISO 8601 timestamp indicating when the export failed. Only present when `status` is `"failed"`. */ + failedAt?: string; + /** Human-readable description of why the export failed. Only present when `status` is `"failed"`. */ + errorMessage?: string; +} +export const CustomerTrustExportStatusResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + status: CustomerTrustExportStatusResponseStatus, + format: CustomerTrustExportStatusResponseFormat, + requestedAt: S.String, + completedAt: S.optional(S.String), + downloadUrl: S.optional(S.String), + expiresAt: S.optional(S.String), + failedAt: S.optional(S.String), + errorMessage: S.optional(S.String), + }), +).annotate({ + identifier: "CustomerTrustExportStatusResponse", +}) as any as S.Schema; + +export interface GetQuestionnaireResponseRequest { + questionnaireId: string; + responseId: string; +} +export const GetQuestionnaireResponseRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaireId: S.String.pipe(T.Label()), + responseId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/customer-trust/questionnaires/{questionnaireId}/responses/{responseId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetQuestionnaireResponseRequest", +}) as any as S.Schema; + +export type QuestionnaireResponseMultipleChoiceAnswer = + | "NO" + | "NOT_APPLICABLE" + | "YES"; +export const QuestionnaireResponseMultipleChoiceAnswer = /*@__PURE__*/ S.String; + +/** Frozen local clone of the shared `QAutoAnswer` shape, scoped to the deprecated REST `answer` field so that field's contract does not track changes to the shared answer-library type. No longer populated at runtime; removal is tracked by CTAUTO-1973. */ +export interface DeprecatedQAutoAnswerForAPI { + explanation?: string | null; + multipleChoice?: QuestionnaireResponseMultipleChoiceAnswer | null; + multipleChoiceCustom?: string | null; +} +export const DeprecatedQAutoAnswerForAPI = /*@__PURE__*/ S.suspend(() => + S.Struct({ + explanation: S.optional(S.NullOr(S.String)), + multipleChoice: S.optional( + S.NullOr(QuestionnaireResponseMultipleChoiceAnswer), + ), + multipleChoiceCustom: S.optional(S.NullOr(S.String)), + }), +).annotate({ + identifier: "DeprecatedQAutoAnswerForAPI", +}) as any as S.Schema; + +export type QuestionnaireResponseOriginType = + | "AI" + | "ANSWER_LIBRARY" + | "MANUAL" + | "ORIGINAL_QUESTIONNAIRE" + | "RESOURCE"; +export const QuestionnaireResponseOriginType = /*@__PURE__*/ S.String; + +/** JSON Schema v7 */ +export type JSONSchema7Definition = JSONSchema7 | boolean; +export const JSONSchema7Definition = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type JSONSchema7DefsMap = { + [key: string]: JSONSchema7Definition | undefined; +}; +export const JSONSchema7DefsMap = /*@__PURE__*/ S.Record( + S.String, + JSONSchema7Definition, +) as any as S.Schema; + +/** Primitive type */ +export type JSONSchema7TypeName = + | "string" + | "number" + | "integer" + | "boolean" + | "object" + | "array" + | "null"; +export const JSONSchema7TypeName = /*@__PURE__*/ S.String; + +export type JSONSchema7TypeCase1List = Array; +export const JSONSchema7TypeCase1List = /*@__PURE__*/ S.Array( + JSONSchema7TypeName, +) as any as S.Schema; + +export type JSONSchema7Type = JSONSchema7TypeName | JSONSchema7TypeCase1List; +export const JSONSchema7Type = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type JSONSchema7Object = { [key: string]: JSONSchema7Type2 | undefined }; +export const JSONSchema7Object = /*@__PURE__*/ S.Record( + S.String, + S.suspend(() => JSONSchema7Type2), +) as any as S.Schema; + +/** Primitive type */ +export type JSONSchema7Type2 = + | string + | number + | boolean + | JSONSchema7Object + | unknown; +export const JSONSchema7Type2 = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type JSONSchema7EnumList = Array; +export const JSONSchema7EnumList = /*@__PURE__*/ S.Array( + JSONSchema7Type2, +) as any as S.Schema; + +export type JSONSchema7ItemsCase1List = Array; +export const JSONSchema7ItemsCase1List = /*@__PURE__*/ S.Array( + JSONSchema7Definition, +) as any as S.Schema; + +export type JSONSchema7Items = + | JSONSchema7Definition + | JSONSchema7ItemsCase1List; +export const JSONSchema7Items = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type JSONSchema7RequiredList = Array; +export const JSONSchema7RequiredList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type JSONSchema7PropertiesMap = { + [key: string]: JSONSchema7Definition | undefined; +}; +export const JSONSchema7PropertiesMap = /*@__PURE__*/ S.Record( + S.String, + JSONSchema7Definition, +) as any as S.Schema; + +export type JSONSchema7PatternPropertiesMap = { + [key: string]: JSONSchema7Definition | undefined; +}; +export const JSONSchema7PatternPropertiesMap = /*@__PURE__*/ S.Record( + S.String, + JSONSchema7Definition, +) as any as S.Schema; + +export type JSONSchema7DependenciesValueCase1List = Array; +export const JSONSchema7DependenciesValueCase1List = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type JSONSchema7DependenciesValue = + | JSONSchema7Definition + | JSONSchema7DependenciesValueCase1List; +export const JSONSchema7DependenciesValue = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type JSONSchema7DependenciesMap = { + [key: string]: JSONSchema7DependenciesValue | undefined; +}; +export const JSONSchema7DependenciesMap = /*@__PURE__*/ S.Record( + S.String, + JSONSchema7DependenciesValue, +) as any as S.Schema; + +export type JSONSchema7AllOfList = Array; +export const JSONSchema7AllOfList = /*@__PURE__*/ S.Array( + JSONSchema7Definition, +) as any as S.Schema; + +export type JSONSchema7AnyOfList = Array; +export const JSONSchema7AnyOfList = /*@__PURE__*/ S.Array( + JSONSchema7Definition, +) as any as S.Schema; + +export type JSONSchema7OneOfList = Array; +export const JSONSchema7OneOfList = /*@__PURE__*/ S.Array( + JSONSchema7Definition, +) as any as S.Schema; + +export type JSONSchema7DefinitionsMap = { + [key: string]: JSONSchema7Definition | undefined; +}; +export const JSONSchema7DefinitionsMap = /*@__PURE__*/ S.Record( + S.String, + JSONSchema7Definition, +) as any as S.Schema; + +export interface JSONSchema7 { + _id?: string; + _ref?: string; + _schema?: string; + _comment?: string; + _defs?: JSONSchema7DefsMap; + type?: JSONSchema7Type; + enum?: JSONSchema7EnumList; + const?: JSONSchema7Type2 | null; + multipleOf?: number; + maximum?: number; + exclusiveMaximum?: number; + minimum?: number; + exclusiveMinimum?: number; + maxLength?: number; + minLength?: number; + pattern?: string; + items?: JSONSchema7Items; + additionalItems?: JSONSchema7Definition; + maxItems?: number; + minItems?: number; + uniqueItems?: boolean; + contains?: JSONSchema7Definition; + maxProperties?: number; + minProperties?: number; + required?: JSONSchema7RequiredList; + properties?: JSONSchema7PropertiesMap; + patternProperties?: JSONSchema7PatternPropertiesMap; + additionalProperties?: JSONSchema7Definition; + dependencies?: JSONSchema7DependenciesMap; + propertyNames?: JSONSchema7Definition; + if?: JSONSchema7Definition; + then?: JSONSchema7Definition; + else?: JSONSchema7Definition; + allOf?: JSONSchema7AllOfList; + anyOf?: JSONSchema7AnyOfList; + oneOf?: JSONSchema7OneOfList; + not?: JSONSchema7Definition; + format?: string; + contentMediaType?: string; + contentEncoding?: string; + definitions?: JSONSchema7DefinitionsMap; + title?: string; + description?: string; + default?: JSONSchema7Type2 | null; + readOnly?: boolean; + writeOnly?: boolean; + examples?: JSONSchema7Type2 | null; +} +export const JSONSchema7 = /*@__PURE__*/ S.suspend(() => + S.Struct({ + _id: S.optional(S.String.pipe(T.Body("$id"))), + _ref: S.optional(S.String.pipe(T.Body("$ref"))), + _schema: S.optional(S.String.pipe(T.Body("$schema"))), + _comment: S.optional(S.String.pipe(T.Body("$comment"))), + _defs: S.optional(JSONSchema7DefsMap.pipe(T.Body("$defs"))), + type: S.optional(JSONSchema7Type), + enum: S.optional(JSONSchema7EnumList), + const: S.optional(S.NullOr(JSONSchema7Type2)), + multipleOf: S.optional(S.Number), + maximum: S.optional(S.Number), + exclusiveMaximum: S.optional(S.Number), + minimum: S.optional(S.Number), + exclusiveMinimum: S.optional(S.Number), + maxLength: S.optional(S.Number), + minLength: S.optional(S.Number), + pattern: S.optional(S.String), + items: S.optional(JSONSchema7Items), + additionalItems: S.optional(JSONSchema7Definition), + maxItems: S.optional(S.Number), + minItems: S.optional(S.Number), + uniqueItems: S.optional(S.Boolean), + contains: S.optional(JSONSchema7Definition), + maxProperties: S.optional(S.Number), + minProperties: S.optional(S.Number), + required: S.optional(JSONSchema7RequiredList), + properties: S.optional(JSONSchema7PropertiesMap), + patternProperties: S.optional(JSONSchema7PatternPropertiesMap), + additionalProperties: S.optional(JSONSchema7Definition), + dependencies: S.optional(JSONSchema7DependenciesMap), + propertyNames: S.optional(JSONSchema7Definition), + if: S.optional(JSONSchema7Definition), + then: S.optional(JSONSchema7Definition), + else: S.optional(JSONSchema7Definition), + allOf: S.optional(JSONSchema7AllOfList), + anyOf: S.optional(JSONSchema7AnyOfList), + oneOf: S.optional(JSONSchema7OneOfList), + not: S.optional(JSONSchema7Definition), + format: S.optional(S.String), + contentMediaType: S.optional(S.String), + contentEncoding: S.optional(S.String), + definitions: S.optional(JSONSchema7DefinitionsMap), + title: S.optional(S.String), + description: S.optional(S.String), + default: S.optional(S.NullOr(JSONSchema7Type2)), + readOnly: S.optional(S.Boolean), + writeOnly: S.optional(S.Boolean), + examples: S.optional(S.NullOr(JSONSchema7Type2)), + }), +).annotate({ identifier: "JSONSchema7" }) as any as S.Schema; + +export type AnswerPartValueCase3List = Array; +export const AnswerPartValueCase3List = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Valid runtime value types for an answer part. Array values are restricted to string items to match `ArrayFieldSchema.items` (which is narrowed to `StringFieldSchema` only). */ +export type AnswerPartValue = + | string + | number + | boolean + | AnswerPartValueCase3List; +export const AnswerPartValue = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +/** Construct a type with a set of properties K of type T */ +export type RecordStringAnswerPartValue = { + [key: string]: AnswerPartValue | undefined; +}; +export const RecordStringAnswerPartValue = /*@__PURE__*/ S.Record( + S.String, + AnswerPartValue, +) as any as S.Schema; + +export interface QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItemUploadedDocument { + slugId?: string; + filename?: string; + id: string; +} +export const QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItemUploadedDocument = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.optional(S.String), + filename: S.optional(S.String), + id: S.String, + }), + ).annotate({ + identifier: + "QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItemUploadedDocument", + }) as any as S.Schema; + +export interface QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItem { + uploadedDocument: QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItemUploadedDocument; +} +export const QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + uploadedDocument: + QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItemUploadedDocument, + }), + ).annotate({ + identifier: + "QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItem", + }) as any as S.Schema; + +/** Evidence documents attached to support this questionnaire response */ +export type QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceList = + Array; +export const QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceList = + /*@__PURE__*/ S.Array( + QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceItem, + ) as any as S.Schema; + +/** A questionnaire response without the fields that describe what the requesting user may do with it. Surfaces that authenticate a client rather than a user return this, since there is no user those fields could describe. */ +export interface QuestionnaireResponseWithoutViewerPermissions { + /** The unique identifier for the questionnaire response */ + id: string; + /** The questionnaire section this response belongs to, if any. Null for standalone questions or legacy responses without a section. */ + sectionId?: string | null; + /** Sequence label for ordering responses within a questionnaire */ + sequenceLabel?: string; + /** The actual question text */ + question: string; + /** The current answer for the question. */ + answer?: DeprecatedQAutoAnswerForAPI; + /** The user who last edited the question/answer */ + editedBy?: CustomerTrustUser | null; + /** The user who approved the current answer */ + approvedBy?: CustomerTrustUser | null; + /** Indicates whether the answer is currently being worked on by AI. */ + isPendingAnswerGeneration: boolean; + /** Where the current answer has came from - AI: generated by Vanta AI - Manual: written in by a user - Original questionnaire: included in the original import - Answer library: the answer was found in a matching question in the knowledge center - Resource: the answer was found in a matching excerpt from a document in the knowledge center */ + originType?: QuestionnaireResponseOriginType; + /** JSON Schema describing the expected answer format for this question. Prefer `answerPartsSchema` + `answerPartsValues` — those mirror the apps/web GraphQL surface and let clients render against the canonical composite schema. */ + answerSchema?: string; + /** Composite JSONSchema7 built from the response's stored answer parts (via `toCompositeSchema`). Mirrors the GraphQL `answerPartsSchema` field. Absent when the response has no stored parts — clients fall back to the legacy `answerSchema` field. */ + answerPartsSchema?: JSONSchema7; + /** Flat map of part-id → current value (via `toAnswerPartsValues`). Same key set as `answerPartsSchema.properties`. Absent when the response has no stored parts. */ + answerPartsValues?: RecordStringAnswerPartValue; + /** Evidence documents attached to support this questionnaire response */ + attachedEvidence?: QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceList; + /** Id of the QAutoGeneratedAnswerLog that produced the current generated answer on this response, if any. The browser extension API exposes the log body and citations at `GET /questionnaires/{questionnaireId}/responses/{responseId}/generated-answer-log`. */ + generatedAnswerLogId?: string; + /** The response's owner, or null when no owner is assigned. Resolved from the object-role grant rather than the response document's legacy `ownerUserId`, which the object-role registry leaves unset for Team owners. */ + ownerAssignment: ActorAssignment | null; +} +export const QuestionnaireResponseWithoutViewerPermissions = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + sectionId: S.optional(S.NullOr(S.String)), + sequenceLabel: S.optional(S.String), + question: S.String, + answer: S.optional(DeprecatedQAutoAnswerForAPI), + editedBy: S.optional(S.NullOr(CustomerTrustUser)), + approvedBy: S.optional(S.NullOr(CustomerTrustUser)), + isPendingAnswerGeneration: S.Boolean, + originType: S.optional(QuestionnaireResponseOriginType), + answerSchema: S.optional(S.String), + answerPartsSchema: S.optional(JSONSchema7), + answerPartsValues: S.optional(RecordStringAnswerPartValue), + attachedEvidence: S.optional( + QuestionnaireResponseWithoutViewerPermissionsAttachedEvidenceList, + ), + generatedAnswerLogId: S.optional(S.String), + ownerAssignment: S.NullOr(ActorAssignment), + }), + ).annotate({ + identifier: "QuestionnaireResponseWithoutViewerPermissions", + }) as any as S.Schema; + +export interface GetResourceRequest { + /** Unique identifier of the integration. */ + integrationId: string; + /** Unique identifier of the integration resource kind. */ + resourceKind: string; + /** Unique identifier of the resource. */ + resourceId: string; +} +export const GetResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String.pipe(T.Label()), + resourceKind: S.String.pipe(T.Label()), + resourceId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/integrations/{integrationId}/resource-kinds/{resourceKind}/resources/{resourceId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetResourceRequest", +}) as any as S.Schema; + +export type ResourceResponseType = + | "Account" + | "AutoScalingGroup" + | "ClusterDeployment" + | "ComputeInstance" + | "ContainerCluster" + | "ContainerRepository" + | "Database" + | "Device" + | "GitRepository" + | "KubernetesCluster" + | "LoadBalancer" + | "PaaS" + | "Resource" + | "Queue" + | "ServerlessFunction" + | "StorageBucket"; +export const ResourceResponseType = /*@__PURE__*/ S.String; + +export interface Resource { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; +} +export const Resource = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + }), +).annotate({ identifier: "Resource" }) as any as S.Schema; + +export interface CloudInfrastructure { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; + /** Name of the account associated with the Resource */ + account: string; + /** Region in which the Resource is located */ + region: string; +} +export const CloudInfrastructure = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + account: S.String, + region: S.String, + }), +).annotate({ + identifier: "CloudInfrastructure", +}) as any as S.Schema; + +export interface ContainerRepository { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; + /** Name of the account associated with the Resource */ + account: string; + /** Region in which the Resource is located */ + region: string; + /** Whether autoscans have been enabled */ + isAutoscanEnabled: boolean | null; +} +export const ContainerRepository = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + account: S.String, + region: S.String, + isAutoscanEnabled: S.NullOr(S.Boolean), + }), +).annotate({ + identifier: "ContainerRepository", +}) as any as S.Schema; + +export interface Database { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; + /** Name of the account associated with the Database */ + account: string; + /** Whether backups are enabled for the Database */ + areBackupsEnabled: boolean | null; + /** Whether the Database is encrypted */ + isEncrypted: boolean; + /** Whether the Database contains Ephi */ + containsEphi: boolean | null; + /** Whether the Database contains user data */ + containsUserData: boolean | null; +} +export const Database = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + account: S.String, + areBackupsEnabled: S.NullOr(S.Boolean), + isEncrypted: S.Boolean, + containsEphi: S.NullOr(S.Boolean), + containsUserData: S.NullOr(S.Boolean), + }), +).annotate({ identifier: "Database" }) as any as S.Schema; + +export interface Device { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; + /** Name of the operating system */ + operatingSystemName: string; + /** Whether the Device is encrypted */ + isEncrypted: boolean | null; + /** Whether the Device contains Ephi */ + containsEphi: boolean | null; + /** Whether the Device contains user data */ + containsUserData: boolean | null; +} +export const Device = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + operatingSystemName: S.String, + isEncrypted: S.NullOr(S.Boolean), + containsEphi: S.NullOr(S.Boolean), + containsUserData: S.NullOr(S.Boolean), + }), +).annotate({ identifier: "Device" }) as any as S.Schema; + +export interface PaaS { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; + /** Whether the PaaS contains Ephi */ + containsEphi: boolean | null; + /** Whether the PaaS contains user data */ + containsUserData: boolean | null; +} +export const PaaS = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + containsEphi: S.NullOr(S.Boolean), + containsUserData: S.NullOr(S.Boolean), + }), +).annotate({ identifier: "PaaS" }) as any as S.Schema; + +export interface Queue { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; + /** Name of the account associated with the Resource */ + account: string; + /** Region in which the Resource is located */ + region: string; + /** Whether the Queue contains Ephi */ + containsEphi: boolean | null; + /** Whether the Queue contains user data */ + containsUserData: boolean | null; +} +export const Queue = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + account: S.String, + region: S.String, + containsEphi: S.NullOr(S.Boolean), + containsUserData: S.NullOr(S.Boolean), + }), +).annotate({ identifier: "Queue" }) as any as S.Schema; + +export interface StorageBucket { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; + /** Name of the account associated with the Resource */ + account: string; + /** Region in which the Resource is located */ + region: string; + /** Whether the StorageBucket is encrypted */ + isEncrypted: boolean; + /** Whether the StorageBucket contains Ephi */ + containsEphi: boolean | null; + /** Whether the StorageBucket contains user data */ + containsUserData: boolean | null; + /** Whether the StorageBucket is versioned */ + isVersioned: boolean | null; +} +export const StorageBucket = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + account: S.String, + region: S.String, + isEncrypted: S.Boolean, + containsEphi: S.NullOr(S.Boolean), + containsUserData: S.NullOr(S.Boolean), + isVersioned: S.NullOr(S.Boolean), + }), +).annotate({ identifier: "StorageBucket" }) as any as S.Schema; + +/** Any role(s) assigned to the Account */ +export type AccountRolesList = Array; +export const AccountRolesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Any groups to which the Account belongs */ +export type AccountGroupsList = Array; +export const AccountGroupsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface Account { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; + /** Name associated with the Account */ + accountName: string; + /** Any role(s) assigned to the Account */ + roles: AccountRolesList; + /** Any groups to which the Account belongs */ + groups: AccountGroupsList; + /** Whether the account has been deactivated/disabled/deleted. */ + isDeactivated: boolean; + /** Whether MFA has been enabled for the account. */ + isMfaEnabled: boolean | null; +} +export const Account = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + accountName: S.String, + roles: AccountRolesList, + groups: AccountGroupsList, + isDeactivated: S.Boolean, + isMfaEnabled: S.NullOr(S.Boolean), + }), +).annotate({ identifier: "Account" }) as any as S.Schema; + +/** Any role(s) assigned to the Account */ +export type AwsAccountRolesList = Array; +export const AwsAccountRolesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Any groups to which the Account belongs */ +export type AwsAccountGroupsList = Array; +export const AwsAccountGroupsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface AccessKeyInfo { + /** The access key ID */ + accessKeyId: string | Redacted.Redacted; + /** The status of the access key */ + status: string; +} +export const AccessKeyInfo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + accessKeyId: S.String.pipe(T.SensitiveValue({})), + status: S.String, + }), +).annotate({ identifier: "AccessKeyInfo" }) as any as S.Schema; + +/** The list of access keys associated with the AWS account */ +export type AwsAccountAccessKeysList = Array; +export const AwsAccountAccessKeysList = /*@__PURE__*/ S.Array( + AccessKeyInfo, +) as any as S.Schema; + +export interface AwsAccount { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; + /** Name associated with the Account */ + accountName: string; + /** Any role(s) assigned to the Account */ + roles: AwsAccountRolesList; + /** Any groups to which the Account belongs */ + groups: AwsAccountGroupsList; + /** Whether the account has been deactivated/disabled/deleted. */ + isDeactivated: boolean; + /** Whether MFA has been enabled for the account. */ + isMfaEnabled: boolean | null; + /** The AWS user account ID associated with the account */ + awsUserAccountId: string; + /** AWS account number (12 digit number) that uniquely identifies your AWS account */ + awsAccountNumber: string; + /** The list of access keys associated with the AWS account */ + accessKeys: AwsAccountAccessKeysList; +} +export const AwsAccount = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + accountName: S.String, + roles: AwsAccountRolesList, + groups: AwsAccountGroupsList, + isDeactivated: S.Boolean, + isMfaEnabled: S.NullOr(S.Boolean), + awsUserAccountId: S.String, + awsAccountNumber: S.String, + accessKeys: AwsAccountAccessKeysList, + }), +).annotate({ identifier: "AwsAccount" }) as any as S.Schema; + +export interface OrganizationSubunit { + responseType: ResourceResponseType; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** The unique identifier for the Resource. */ + resourceId: string; + /** The unique identifier for the Connection used to ingest the Resource if it exists. */ + connectionId: string | null; + /** The Resource's display name. */ + displayName: string; + /** The unique identifier for the owner of the resource in Vanta. */ + owner: string | null; + /** Whether the resource is in scope for audits. */ + inScope: boolean; + /** The description of the resource in Vanta. */ + description: string | null; + /** When Vanta first ingested the Resource. */ + creationDate: string; + /** When the resource was deleted/removed from the integration, if applicable. This field is only present when the resource has been deleted. */ + deletedDate?: string | null; + /** Account ID corresponding to the subunit. Could be null if the subunit is not an account, e.g. a subscription */ + accountId: string | null; +} +export const OrganizationSubunit = /*@__PURE__*/ S.suspend(() => + S.Struct({ + responseType: ResourceResponseType, + resourceKind: S.String, + resourceId: S.String, + connectionId: S.NullOr(S.String), + displayName: S.String, + owner: S.NullOr(S.String), + inScope: S.Boolean, + description: S.NullOr(S.String), + creationDate: S.String, + deletedDate: S.optional(S.NullOr(S.String)), + accountId: S.NullOr(S.String), + }), +).annotate({ + identifier: "OrganizationSubunit", +}) as any as S.Schema; + +export type AnyResource = + | Resource + | CloudInfrastructure + | ContainerRepository + | Database + | Device + | PaaS + | Queue + | StorageBucket + | Account + | AwsAccount + | OrganizationSubunit; +export const AnyResource = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type GetResourceResponse = AnyResource; +export const GetResourceResponse = /*@__PURE__*/ S.suspend(() => + AnyResource.pipe(T.RawResponseRoot()), +).annotate({ + identifier: "GetResourceResponse", +}) as any as S.Schema; + +export interface GetResourceKindDetailsRequest { + /** Unique identifier of the integration. */ + integrationId: string; + /** Unique identifier of the integration resource kind. */ + resourceKind: string; + /** Unique identifier of the integration connection. */ + connectionId?: string; +} +export const GetResourceKindDetailsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String.pipe(T.Label()), + resourceKind: S.String.pipe(T.Label()), + connectionId: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/integrations/{integrationId}/resource-kinds/{resourceKind}", + code: 200, + }), + ), +).annotate({ + identifier: "GetResourceKindDetailsRequest", +}) as any as S.Schema; + +export interface ResourceKindDetails { + /** The unique identifier for the Integration that ingests this resource. */ + integrationId: string; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** Whether resources of this type may be scoped out of an audit. */ + isScopable: boolean; + /** Whether resources of this type may be assigned a description. */ + canUpdateDescription: boolean; + /** Whether resources of this type may be assigned an owner. */ + canUpdateOwner: boolean; + /** The count of resources of the given type. */ + numResources: number; + /** The count of resources of the given type that are in scope for audits. */ + numInScope: number; + /** The count of resources of the given type that have been assigned an owner in Vanta. */ + numOwned: number; + /** The count of resources of the given type that have been given a description in Vanta. */ + numWithDescription: number; +} +export const ResourceKindDetails = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String, + resourceKind: S.String, + isScopable: S.Boolean, + canUpdateDescription: S.Boolean, + canUpdateOwner: S.Boolean, + numResources: S.Number, + numInScope: S.Number, + numOwned: S.Number, + numWithDescription: S.Number, + }), +).annotate({ + identifier: "ResourceKindDetails", +}) as any as S.Schema; + +export interface GetRiskScenarioRequest { + riskScenarioId: string; +} +export const GetRiskScenarioRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + riskScenarioId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/risk-scenarios/{riskScenarioId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetRiskScenarioRequest", +}) as any as S.Schema; + +export interface GetSecurityReviewDocumentsRequest { + vendorId: string; + securityReviewId: string; + pageSize?: number; + pageCursor?: string; +} +export const GetSecurityReviewDocumentsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + securityReviewId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/vendors/{vendorId}/security-reviews/{securityReviewId}/documents", + code: 200, + }), + ), +).annotate({ + identifier: "GetSecurityReviewDocumentsRequest", +}) as any as S.Schema; + +export type UploadedDocumentUploadedByType = "USER" | "APPLICATION"; +export const UploadedDocumentUploadedByType = /*@__PURE__*/ S.String; + +/** The actor who uploaded this document. It could be a user or an app. */ +export interface VendorDocumentUploadedBy { + type: UploadedDocumentUploadedByType; + id: string; +} +export const VendorDocumentUploadedBy = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: UploadedDocumentUploadedByType, + id: S.String, + }), +).annotate({ + identifier: "VendorDocumentUploadedBy", +}) as any as S.Schema; + +export interface VendorDocument { + /** Unique identifier for the document. */ + id: string; + /** The file name of the document. */ + fileName: string | null; + /** The document's title. */ + title: string; + /** The document's description */ + description: string | null; + /** Mime type of the document. */ + mimeType: string; + /** The actor who uploaded this document. It could be a user or an app. */ + uploadedBy: VendorDocumentUploadedBy | null; + /** Date of when the document was uploaded. */ + creationDate: string; + /** Date when the document was last updated. */ + updatedDate: string; + /** Date of when the document was deleted. Is set to null if the document has not been deleted. */ + deletionDate: string | null; + /** Type of the vendor document. */ + type: string; + /** URL link to the document */ + url: string; +} +export const VendorDocument = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + fileName: S.NullOr(S.String), + title: S.String, + description: S.NullOr(S.String), + mimeType: S.String, + uploadedBy: S.NullOr(VendorDocumentUploadedBy), + creationDate: S.String, + updatedDate: S.String, + deletionDate: S.NullOr(S.String), + type: S.String, + url: S.String, + }), +).annotate({ identifier: "VendorDocument" }) as any as S.Schema; + +export type PaginatedResponseVendorDocumentResultsDataList = + Array; +export const PaginatedResponseVendorDocumentResultsDataList = + /*@__PURE__*/ S.Array( + VendorDocument, + ) as any as S.Schema; + +export interface PaginatedResponseVendorDocumentResults { + data: PaginatedResponseVendorDocumentResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseVendorDocumentResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseVendorDocumentResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseVendorDocumentResults", +}) as any as S.Schema; + +export interface PaginatedResponseVendorDocument { + results: PaginatedResponseVendorDocumentResults; +} +export const PaginatedResponseVendorDocument = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseVendorDocumentResults, + }), +).annotate({ + identifier: "PaginatedResponseVendorDocument", +}) as any as S.Schema; + +export interface GetSecurityReviewsByIdRequest { + vendorId: string; + securityReviewId: string; +} +export const GetSecurityReviewsByIdRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + securityReviewId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/vendors/{vendorId}/security-reviews/{securityReviewId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetSecurityReviewsByIdRequest", +}) as any as S.Schema; + +/** An object containing information about the decision of the review. */ +export interface SecurityReviewDecision { + /** The timestamp of when the security review decision was last set. */ + lastUpdatedAt: string; + /** The status of the current decision. */ + status: AssessmentDecision; +} +export const SecurityReviewDecision = /*@__PURE__*/ S.suspend(() => + S.Struct({ + lastUpdatedAt: S.String, + status: AssessmentDecision, + }), +).annotate({ + identifier: "SecurityReviewDecision", +}) as any as S.Schema; + +export interface SecurityReview { + /** Unique identifier for the security review. */ + id: string; + /** Unique identifier for the vendor. */ + vendorId: string; + /** Notes about the security review's decision status. */ + decisionNotes: string | null; + /** Comments about the security review. */ + comments: string | null; + /** The Vanta user ID of the person who completed this review. */ + completedByUserId: string | null; + /** The timestamp of the when the security review was started. */ + startDate: string | null; + /** The timestamp of the when the security review is due. */ + dueDate: string | null; + /** A manual override timestamp of the when the security review is due. */ + overrideDueDate: string | null; + /** The timestamp of the when the security review was marked as completed. */ + completionDate: string | null; + /** An object containing information about the decision of the review. */ + decision: SecurityReviewDecision | null; + /** The assessment type for this security review. */ + assessmentType: AssessmentType; + /** The owner of this security review, if assigned. */ + owner: AssessmentOwner | null; +} +export const SecurityReview = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + vendorId: S.String, + decisionNotes: S.NullOr(S.String), + comments: S.NullOr(S.String), + completedByUserId: S.NullOr(S.String), + startDate: S.NullOr(S.String), + dueDate: S.NullOr(S.String), + overrideDueDate: S.NullOr(S.String), + completionDate: S.NullOr(S.String), + decision: S.NullOr(SecurityReviewDecision), + assessmentType: AssessmentType, + owner: S.NullOr(AssessmentOwner), + }), +).annotate({ identifier: "SecurityReview" }) as any as S.Schema; + +export interface GetSecurityReviewsByVendorIdRequest { + vendorId: string; + pageSize?: number; + pageCursor?: string; +} +export const GetSecurityReviewsByVendorIdRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/vendors/{vendorId}/security-reviews", + code: 200, + }), + ), +).annotate({ + identifier: "GetSecurityReviewsByVendorIdRequest", +}) as any as S.Schema; + +export type PaginatedResponseSecurityReviewResultsDataList = + Array; +export const PaginatedResponseSecurityReviewResultsDataList = + /*@__PURE__*/ S.Array( + SecurityReview, + ) as any as S.Schema; + +export interface PaginatedResponseSecurityReviewResults { + data: PaginatedResponseSecurityReviewResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseSecurityReviewResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseSecurityReviewResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseSecurityReviewResults", +}) as any as S.Schema; + +export interface PaginatedResponseSecurityReview { + results: PaginatedResponseSecurityReviewResults; +} +export const PaginatedResponseSecurityReview = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseSecurityReviewResults, + }), +).annotate({ + identifier: "PaginatedResponseSecurityReview", +}) as any as S.Schema; + +export interface GetTagsForCategoryRequest { + tagCategoryId: string; +} +export const GetTagsForCategoryRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + tagCategoryId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/customer-trust/tag-categories/{tagCategoryId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTagsForCategoryRequest", +}) as any as S.Schema; + +export interface UserDefinedTagCategory { + id: string; + displayName: string; +} +export const UserDefinedTagCategory = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.String, + }), +).annotate({ + identifier: "UserDefinedTagCategory", +}) as any as S.Schema; + +export interface UserDefinedTag { + id: string; + category: string; + displayName: string; +} +export const UserDefinedTag = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + category: S.String, + displayName: S.String, + }), +).annotate({ identifier: "UserDefinedTag" }) as any as S.Schema; + +export type TagCategoryWithTagsTagsList = Array; +export const TagCategoryWithTagsTagsList = /*@__PURE__*/ S.Array( + UserDefinedTag, +) as any as S.Schema; + +export interface TagCategoryWithTags { + category: UserDefinedTagCategory; + tags: TagCategoryWithTagsTagsList; +} +export const TagCategoryWithTags = /*@__PURE__*/ S.suspend(() => + S.Struct({ + category: UserDefinedTagCategory, + tags: TagCategoryWithTagsTagsList, + }), +).annotate({ + identifier: "TagCategoryWithTags", +}) as any as S.Schema; + +export interface GetTestRequest { + testId: string; +} +export const GetTestRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + testId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/tests/{testId}", code: 200 })), +).annotate({ identifier: "GetTestRequest" }) as any as S.Schema; + +export type EntityStatus = "FAILING" | "DEACTIVATED"; +export const EntityStatus = /*@__PURE__*/ S.String; + +export interface GetTestEntitiesRequest { + testId: string; + /** The status of the test entities. Defaults to FAILING. Possible values: FAILING, DEACTIVATED */ + entityStatus?: EntityStatus | (string & {}); + pageSize?: number; + pageCursor?: string; +} +export const GetTestEntitiesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + testId: S.String.pipe(T.Label()), + entityStatus: S.optional(EntityStatus.pipe(T.Query())), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/tests/{testId}/entities", code: 200 }), + ), +).annotate({ + identifier: "GetTestEntitiesRequest", +}) as any as S.Schema; + +export interface TestResourceEntity { + /** The identifier for the entity. */ + id: string; + /** The status of the entity. Supports either FAILING or DEACTIVATED entities. */ + entityStatus: EntityStatus; + /** The display name of the entity. */ + displayName: string; + /** The response type of the entity. */ + responseType: string; + /** The reason for deactivation. */ + deactivatedReason: string | null; + /** The date of the last update to the test entity. Falls back to the test run date if there is no remediation timeline. */ + lastUpdatedDate: string; + /** The date where the test entity was first detected. Falls back to the test run date if there is no remediation timeline. */ + createdDate: string; +} +export const TestResourceEntity = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + entityStatus: EntityStatus, + displayName: S.String, + responseType: S.String, + deactivatedReason: S.NullOr(S.String), + lastUpdatedDate: S.String, + createdDate: S.String, + }), +).annotate({ + identifier: "TestResourceEntity", +}) as any as S.Schema; + +export type PaginatedResponseTestResourceEntityResultsDataList = + Array; +export const PaginatedResponseTestResourceEntityResultsDataList = + /*@__PURE__*/ S.Array( + TestResourceEntity, + ) as any as S.Schema; + +export interface PaginatedResponseTestResourceEntityResults { + data: PaginatedResponseTestResourceEntityResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTestResourceEntityResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTestResourceEntityResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTestResourceEntityResults", + }) as any as S.Schema; + +export interface PaginatedResponseTestResourceEntity { + results: PaginatedResponseTestResourceEntityResults; +} +export const PaginatedResponseTestResourceEntity = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTestResourceEntityResults, + }), +).annotate({ + identifier: "PaginatedResponseTestResourceEntity", +}) as any as S.Schema; + +export interface GetTrustCenterRequest { + slugId: string; +} +export const GetTrustCenterRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/trust-centers/{slugId}", code: 200 })), +).annotate({ + identifier: "GetTrustCenterRequest", +}) as any as S.Schema; + +/** Possible banner settings for the Trust Center. - CUSTOM_IMAGE: Banner is a custom uploaded image. - GRADIENT: Banner is a gradient between two colors. - MINIMAL: No banner. - VANTA: Legacy Vanta-themed banner. No longer selectable as a banner style. */ +export type BannerSetting = "CUSTOM_IMAGE" | "GRADIENT" | "MINIMAL" | "VANTA"; +export const BannerSetting = /*@__PURE__*/ S.String; + +/** Information about the Trust Center's banner. */ +export interface TrustCenterBannerSetting { + /** End color of the banner. Only applies if setting is GRADIENT. */ + endColor: string | null; + /** Start color of the banner. Only applies if setting is GRADIENT. */ + startColor: string | null; + /** Banner setting option. */ + setting: BannerSetting | null; +} +export const TrustCenterBannerSetting = /*@__PURE__*/ S.suspend(() => + S.Struct({ + endColor: S.NullOr(S.String), + startColor: S.NullOr(S.String), + setting: S.NullOr(BannerSetting), + }), +).annotate({ + identifier: "TrustCenterBannerSetting", +}) as any as S.Schema; + +/** Custom theme colors chosen for the Trust Center. */ +export interface TrustCenterCustomTheme { + /** Secondary color selected for the theme. */ + secondary: string | null; + /** Primary color selected for the theme. */ + primary: string | null; +} +export const TrustCenterCustomTheme = /*@__PURE__*/ S.suspend(() => + S.Struct({ + secondary: S.NullOr(S.String), + primary: S.NullOr(S.String), + }), +).annotate({ + identifier: "TrustCenterCustomTheme", +}) as any as S.Schema; + +export interface TrustCenter { + /** Unique identifier for the Trust Center. */ + id: string; + /** Custom title set for the Trust Center. */ + title: string | null; + /** Company description displayed in the Trust Center header. */ + companyDescription: string | null; + /** URL of the Trust Center company's privacy policy. */ + privacyPolicy: string | null; + /** URL of the Trust Center company's AWS Marketplace listing. */ + awsMarketplaceListing: string | null; + /** Custom domain that the Trust Center can be found at, e.g. trust.vanta.com. */ + customDomain: string | null; + /** Whether the Trust Center is public. */ + isPublic: boolean; + /** Information about the Trust Center's banner. */ + bannerSetting: TrustCenterBannerSetting; + /** Custom theme colors chosen for the Trust Center. */ + customTheme: TrustCenterCustomTheme; + /** Contact email displayed on the Trust Center. */ + contactEmail: string | null; + /** Custom heading displayed on the Trust Center. */ + customHeading: string | null; + /** The default status-visibility mode applied to all controls that don't have a category-level override. Always `SHOW_ALL_WITHOUT_STATUS` for domains without the Vanta Compliance Platform, which have no control status to render. */ + controlVisibilityMode: TrustCenterControlVisibilityMode; + /** Date the Trust Center was created. */ + creationDate: string; + /** Date the Trust Center was last updated. */ + updatedDate: string; +} +export const TrustCenter = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + title: S.NullOr(S.String), + companyDescription: S.NullOr(S.String), + privacyPolicy: S.NullOr(S.String), + awsMarketplaceListing: S.NullOr(S.String), + customDomain: S.NullOr(S.String), + isPublic: S.Boolean, + bannerSetting: TrustCenterBannerSetting, + customTheme: TrustCenterCustomTheme, + contactEmail: S.NullOr(S.String), + customHeading: S.NullOr(S.String), + controlVisibilityMode: TrustCenterControlVisibilityMode, + creationDate: S.String, + updatedDate: S.String, + }), +).annotate({ identifier: "TrustCenter" }) as any as S.Schema; + +export interface GetTrustCenterAccessRequestRequest { + slugId: string; + accessRequestId: string; +} +export const GetTrustCenterAccessRequestRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + accessRequestId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/access-requests/{accessRequestId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterAccessRequestRequest", +}) as any as S.Schema; + +/** IDs for the resources that the viewer requested access to. */ +export type TrustCenterAccessRequestRequestedResourcesList = Array; +export const TrustCenterAccessRequestRequestedResourcesList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface TrustCenterAccessRequest { + /** Unique identifier for the access request. */ + id: string; + /** Email of the requester. */ + email: string; + /** Name of the requester. */ + name: string; + /** Name of the requester's company. */ + companyName: string; + /** Reason for the access request. */ + reason: string; + /** IDs for the resources that the viewer requested access to. */ + requestedResources: TrustCenterAccessRequestRequestedResourcesList | null; + /** Access level that the viewer requested. */ + accessLevel: ViewerAccessLevel; + /** Date the access request was created. */ + creationDate: string; + /** Date the access request was last updated. */ + updatedDate: string; +} +export const TrustCenterAccessRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + email: S.String, + name: S.String, + companyName: S.String, + reason: S.String, + requestedResources: S.NullOr( + TrustCenterAccessRequestRequestedResourcesList, + ), + accessLevel: ViewerAccessLevel, + creationDate: S.String, + updatedDate: S.String, + }), +).annotate({ + identifier: "TrustCenterAccessRequest", +}) as any as S.Schema; + +export interface GetTrustCenterControlRequest { + slugId: string; + controlId: string; +} +export const GetTrustCenterControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + controlId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/controls/{controlId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterControlRequest", +}) as any as S.Schema; + +export interface GetTrustCenterControlCategoriesRequest { + slugId: string; +} +export const GetTrustCenterControlCategoriesRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/control-categories", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterControlCategoriesRequest", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterControlCategoryResultsList = + Array; +export const ArrayResponseTrustCenterControlCategoryResultsList = + /*@__PURE__*/ S.Array( + TrustCenterControlCategory, + ) as any as S.Schema; + +export interface ArrayResponseTrustCenterControlCategory { + results: ArrayResponseTrustCenterControlCategoryResultsList; +} +export const ArrayResponseTrustCenterControlCategory = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: ArrayResponseTrustCenterControlCategoryResultsList, + }), +).annotate({ + identifier: "ArrayResponseTrustCenterControlCategory", +}) as any as S.Schema; + +export interface GetTrustCenterControlCategoryRequest { + slugId: string; + categoryId: string; +} +export const GetTrustCenterControlCategoryRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + categoryId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/control-categories/{categoryId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterControlCategoryRequest", +}) as any as S.Schema; + +export interface GetTrustCenterFaqRequest { + slugId: string; + faqId: string; +} +export const GetTrustCenterFaqRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + faqId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/faqs/{faqId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterFaqRequest", +}) as any as S.Schema; + +export interface GetTrustCenterResourceRequest { + slugId: string; + resourceId: string; +} +export const GetTrustCenterResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + resourceId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/resources/{resourceId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterResourceRequest", +}) as any as S.Schema; + +export interface GetTrustCenterResourceMediaRequest { + slugId: string; + resourceId: string; +} +export const GetTrustCenterResourceMediaRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + resourceId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/resources/{resourceId}/media", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterResourceMediaRequest", +}) as any as S.Schema; + +export interface NodeJSReadableStream { + readable: boolean; +} +export const NodeJSReadableStream = /*@__PURE__*/ S.suspend(() => + S.Struct({ + readable: S.Boolean, + }), +).annotate({ + identifier: "NodeJSReadableStream", +}) as any as S.Schema; + +export interface GetTrustCenterSubprocessorRequest { + slugId: string; + subprocessorId: string; +} +export const GetTrustCenterSubprocessorRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + subprocessorId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/subprocessors/{subprocessorId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterSubprocessorRequest", +}) as any as S.Schema; + +export interface TrustCenterSubprocessor { + /** Unique identifier for the subprocessor. */ + id: string; + /** Name of the subprocessor. */ + name: string; + /** Description of the subprocessor. */ + description: string | null; + /** Where this subprocessor is deployed. */ + location: string | null; + /** The purpose that the subprocessor serves. */ + purpose: string | null; + /** URL of the subprocessor. */ + url: string | null; +} +export const TrustCenterSubprocessor = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + description: S.NullOr(S.String), + location: S.NullOr(S.String), + purpose: S.NullOr(S.String), + url: S.NullOr(S.String), + }), +).annotate({ + identifier: "TrustCenterSubprocessor", +}) as any as S.Schema; + +export interface GetTrustCenterSubscriberRequest { + slugId: string; + subscriberId: string; +} +export const GetTrustCenterSubscriberRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + subscriberId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/subscribers/{subscriberId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterSubscriberRequest", +}) as any as S.Schema; + +export interface GetTrustCenterSubscriberGroupRequest { + slugId: string; + subscriberGroupId: string; +} +export const GetTrustCenterSubscriberGroupRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + subscriberGroupId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/subscriber-groups/{subscriberGroupId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterSubscriberGroupRequest", +}) as any as S.Schema; + +export interface GetTrustCenterUpdateRequest { + slugId: string; + updateId: string; +} +export const GetTrustCenterUpdateRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + updateId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/updates/{updateId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterUpdateRequest", +}) as any as S.Schema; + +export interface GetTrustCenterViewerRequest { + slugId: string; + viewerId: string; +} +export const GetTrustCenterViewerRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + viewerId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/viewers/{viewerId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetTrustCenterViewerRequest", +}) as any as S.Schema; + +export interface GetUploadedfileMediaRequest { + documentId: string; + uploadedFileId: string; +} +export const GetUploadedfileMediaRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + uploadedFileId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/documents/{documentId}/uploads/{uploadedFileId}/media", + code: 200, + }), + ), +).annotate({ + identifier: "GetUploadedfileMediaRequest", +}) as any as S.Schema; + +export interface GetUserRequest { + userId: string; +} +export const GetUserRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + userId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/users/{userId}", code: 200 })), +).annotate({ identifier: "GetUserRequest" }) as any as S.Schema; + +export interface User { + id: string; + email: string; + displayName: string; + isActive: boolean; +} +export const User = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + email: S.String, + displayName: S.String, + isActive: S.Boolean, + }), +).annotate({ identifier: "User" }) as any as S.Schema; + +export interface GetVendorRequest { + vendorId: string; +} +export const GetVendorRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + }).pipe(T.Http({ method: "GET", uri: "/vendors/{vendorId}", code: 200 })), +).annotate({ + identifier: "GetVendorRequest", +}) as any as S.Schema; + +export interface GetVendorAssessmentTypeByIdRequest { + assessmentTypeId: string; +} +export const GetVendorAssessmentTypeByIdRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + assessmentTypeId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/vendor-assessment-types/{assessmentTypeId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetVendorAssessmentTypeByIdRequest", +}) as any as S.Schema; + +/** The lifecycle status of a vendor assessment type: - ACTIVE: The assessment type is available for use. - ARCHIVED: The assessment type has been archived and is kept for historical reference. */ +export type VendorAssessmentTypeLifecycleStatus = "ACTIVE" | "ARCHIVED"; +export const VendorAssessmentTypeLifecycleStatus = /*@__PURE__*/ S.String; + +export interface VendorAssessmentType { + /** Unique identifier for the assessment type. */ + id: string; + /** Display name of the assessment type. */ + name: string; + /** Description of the assessment type, if set. */ + description: string | null; + /** The lifecycle status of the assessment type. */ + status: VendorAssessmentTypeLifecycleStatus; +} +export const VendorAssessmentType = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + description: S.NullOr(S.String), + status: VendorAssessmentTypeLifecycleStatus, + }), +).annotate({ + identifier: "VendorAssessmentType", +}) as any as S.Schema; + +export interface GetVulnerabilityRequest { + vulnerabilityId: string; +} +export const GetVulnerabilityRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vulnerabilityId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/vulnerabilities/{vulnerabilityId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetVulnerabilityRequest", +}) as any as S.Schema; + +export type VulnerabilityType = "CONFIGURATION" | "COMMON" | "GROUPED"; +export const VulnerabilityType = /*@__PURE__*/ S.String; + +export type ExternalFindingSeverityType = + | "CRITICAL" + | "HIGH" + | "LOW" + | "MEDIUM"; +export const ExternalFindingSeverityType = /*@__PURE__*/ S.String; + +/** Related vulnerabilities. Only relevant to vulnerabilities of type GROUPED. */ +export type VulnerabilityRelatedVulnsList = Array; +export const VulnerabilityRelatedVulnsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Related URLs. */ +export type VulnerabilityRelatedUrlsList = Array; +export const VulnerabilityRelatedUrlsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Metadata for the deactivation of the vulnerability. */ +export interface VulnerabilityDeactivateMetadata { + /** Whether the vulnerability is deactivated indefinitely. */ + isVulnDeactivatedIndefinitely: boolean; + /** Date when the vulnerability will be reactivated. */ + deactivatedUntilDate: string | null; + /** Reason for deactivating the vulnerability. */ + deactivationReason: string; + /** Date when the vulnerability was deactivated. */ + deactivatedOnDate: string; + /** Identifier of the user who deactivated the vulnerability. */ + deactivatedBy: string; +} +export const VulnerabilityDeactivateMetadata = /*@__PURE__*/ S.suspend(() => + S.Struct({ + isVulnDeactivatedIndefinitely: S.Boolean, + deactivatedUntilDate: S.NullOr(S.String), + deactivationReason: S.String, + deactivatedOnDate: S.String, + deactivatedBy: S.String, + }), +).annotate({ + identifier: "VulnerabilityDeactivateMetadata", +}) as any as S.Schema; + +export interface Vulnerability { + /** Unique identifier for the vulnerability. */ + id: string; + /** Display name of the vulnerability. */ + name: string; + /** Description of the vulnerability. */ + description: string; + /** Integration that the vulnerability is scanned by. */ + integrationId: string; + /** Identifier for the package that the vulnerability is found on. Only relevant to vulnerabilities of type COMMON or GROUPED. */ + packageIdentifier: string | null; + /** Type of the vulnerability. Possible values: CONFIGURATION, COMMON, GROUPED. */ + vulnerabilityType: VulnerabilityType; + /** Unique identifier for the underlying resource that the vulnerability is found on. */ + targetId: string; + /** Date when the vulnerability was first detected by Vanta. */ + firstDetectedDate: string; + /** Date when the vulnerability was first detected by the source. */ + sourceDetectedDate: string | null; + /** Date when the vulnerability was last detected. */ + lastDetectedDate: string | null; + /** Severity of the vulnerability. Possible values: LOW, MEDIUM, HIGH, CRITICAL. */ + severity: ExternalFindingSeverityType; + /** CVSS severity score of the vulnerability. */ + cvssSeverityScore: number | null; + /** Scanner score of the vulnerability. */ + scannerScore: number | null; + /** Whether the vulnerability is fixable. */ + isFixable: boolean; + /** Date when the vulnerability should be remediated by. */ + remediateByDate: string | null; + /** Related vulnerabilities. Only relevant to vulnerabilities of type GROUPED. */ + relatedVulns: VulnerabilityRelatedVulnsList; + /** Related URLs. */ + relatedUrls: VulnerabilityRelatedUrlsList; + /** External URL for the vulnerability. */ + externalURL: string; + /** Scanning tool that detected the vulnerability */ + scanSource?: string; + /** Metadata for the deactivation of the vulnerability. */ + deactivateMetadata: VulnerabilityDeactivateMetadata | null; + /** Package version that remediates the vulnerability when reported by the scanner. Null when unknown or not applicable. */ + fixedVersion: string | null; + /** Identifier for the affected asset in the source system that detected the vulnerability. */ + externalId: string | null; +} +export const Vulnerability = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + description: S.String, + integrationId: S.String, + packageIdentifier: S.NullOr(S.String), + vulnerabilityType: VulnerabilityType, + targetId: S.String, + firstDetectedDate: S.String, + sourceDetectedDate: S.NullOr(S.String), + lastDetectedDate: S.NullOr(S.String), + severity: ExternalFindingSeverityType, + cvssSeverityScore: S.NullOr(S.Number), + scannerScore: S.NullOr(S.Number), + isFixable: S.Boolean, + remediateByDate: S.NullOr(S.String), + relatedVulns: VulnerabilityRelatedVulnsList, + relatedUrls: VulnerabilityRelatedUrlsList, + externalURL: S.String, + scanSource: S.optional(S.String), + deactivateMetadata: S.NullOr(VulnerabilityDeactivateMetadata), + fixedVersion: S.NullOr(S.String), + externalId: S.NullOr(S.String), + }), +).annotate({ identifier: "Vulnerability" }) as any as S.Schema; + +export interface GetVulnerableAssetRequest { + vulnerableAssetId: string; +} +export const GetVulnerableAssetRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vulnerableAssetId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/vulnerable-assets/{vulnerableAssetId}", + code: 200, + }), + ), +).annotate({ + identifier: "GetVulnerableAssetRequest", +}) as any as S.Schema; + +/** VulnerableAssetType describes the types of assets a vulnerability is on. */ +export type VulnerableAssetType = + | "SERVER" + | "SERVERLESS_FUNCTION" + | "CONTAINER" + | "CONTAINER_REPOSITORY" + | "CONTAINER_REPOSITORY_IMAGE" + | "CODE_REPOSITORY" + | "MANIFEST_FILE" + | "WORKSTATION" + | "OTHER"; +export const VulnerableAssetType = /*@__PURE__*/ S.String; + +/** Tags of the scanned container image. */ +export type VulnerableAssetScannerImageTagsList = Array; +export const VulnerableAssetScannerImageTagsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface KeyValuePair { + /** Key of key-value pair. */ + key: string; + /** Value of key-value pair. */ + value: string; +} +export const KeyValuePair = /*@__PURE__*/ S.suspend(() => + S.Struct({ + key: S.String, + value: S.String, + }), +).annotate({ identifier: "KeyValuePair" }) as any as S.Schema; + +/** Tags of the scanned asset. */ +export type VulnerableAssetScannerAssetTagsList = Array; +export const VulnerableAssetScannerAssetTagsList = /*@__PURE__*/ S.Array( + KeyValuePair, +) as any as S.Schema; + +/** IPV4s of the scanned asset. */ +export type VulnerableAssetScannerIpv4sList = Array; +export const VulnerableAssetScannerIpv4sList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** IPV6s of the scanned asset. */ +export type VulnerableAssetScannerIpv6sList = Array; +export const VulnerableAssetScannerIpv6sList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Mac addresses of the scanned asset. */ +export type VulnerableAssetScannerMacAddressesList = Array; +export const VulnerableAssetScannerMacAddressesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Host names of the scanned asset. */ +export type VulnerableAssetScannerHostnamesList = Array; +export const VulnerableAssetScannerHostnamesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** fqdns of the scanned asset. */ +export type VulnerableAssetScannerFqdnsList = Array; +export const VulnerableAssetScannerFqdnsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Operating systems of the scanned asset. */ +export type VulnerableAssetScannerOperatingSystemsList = Array; +export const VulnerableAssetScannerOperatingSystemsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface VulnerableAssetScanner { + /** The scanned asset's Vanta resource id. */ + resourceId: string; + /** Integration that the the vulnerable asset is scanned by. */ + integrationId: string; + /** Digest of the scanned container image. */ + imageDigest: string | null; + /** Push date of the scanned container image. */ + imagePushedAtDate: string | null; + /** Tags of the scanned container image. */ + imageTags: VulnerableAssetScannerImageTagsList | null; + /** Tags of the scanned asset. */ + assetTags: VulnerableAssetScannerAssetTagsList | null; + /** The parent account or organization of the scanned asset. */ + parentAccountOrOrganization: string | null; + /** BIOS UUID of the scanned asset. */ + biosUuid: string | null; + /** IPV4s of the scanned asset. */ + ipv4s: VulnerableAssetScannerIpv4sList | null; + /** IPV6s of the scanned asset. */ + ipv6s: VulnerableAssetScannerIpv6sList | null; + /** Mac addresses of the scanned asset. */ + macAddresses: VulnerableAssetScannerMacAddressesList | null; + /** Host names of the scanned asset. */ + hostnames: VulnerableAssetScannerHostnamesList | null; + /** fqdns of the scanned asset. */ + fqdns: VulnerableAssetScannerFqdnsList | null; + /** Operating systems of the scanned asset. */ + operatingSystems: VulnerableAssetScannerOperatingSystemsList | null; + /** The asset's identifier code. */ + targetId: string | null; +} +export const VulnerableAssetScanner = /*@__PURE__*/ S.suspend(() => + S.Struct({ + resourceId: S.String, + integrationId: S.String, + imageDigest: S.NullOr(S.String), + imagePushedAtDate: S.NullOr(S.String), + imageTags: S.NullOr(VulnerableAssetScannerImageTagsList), + assetTags: S.NullOr(VulnerableAssetScannerAssetTagsList), + parentAccountOrOrganization: S.NullOr(S.String), + biosUuid: S.NullOr(S.String), + ipv4s: S.NullOr(VulnerableAssetScannerIpv4sList), + ipv6s: S.NullOr(VulnerableAssetScannerIpv6sList), + macAddresses: S.NullOr(VulnerableAssetScannerMacAddressesList), + hostnames: S.NullOr(VulnerableAssetScannerHostnamesList), + fqdns: S.NullOr(VulnerableAssetScannerFqdnsList), + operatingSystems: S.NullOr(VulnerableAssetScannerOperatingSystemsList), + targetId: S.NullOr(S.String), + }), +).annotate({ + identifier: "VulnerableAssetScanner", +}) as any as S.Schema; + +/** The integrations that are scanning this vulnerable asset. */ +export type VulnerableAssetScannersList = Array; +export const VulnerableAssetScannersList = /*@__PURE__*/ S.Array( + VulnerableAssetScanner, +) as any as S.Schema; + +export interface VulnerableAsset { + /** Unique identifier for the vulnerable asset. */ + id: string; + /** Display name of the vulnerable asset. */ + name: string; + /** Type of the vulnerable asset. Possible values: CODE_REPOSITORY, CONTAINER_REPOSITORY, CONTAINER_REPOSITORY_IMAGE, MANIFEST_FILE, SERVER, SERVERLESS_FUNCTION, WORKSTATION. */ + assetType: VulnerableAssetType; + /** Whether the vulnerable asset has been scanned. */ + hasBeenScanned: boolean; + /** Only relevant for container repositories. This field sets the container image tag that vulnerabilities will be retrieved for. If null, the latest image will be retrieved. */ + imageScanTag: string | null; + /** The integrations that are scanning this vulnerable asset. */ + scanners: VulnerableAssetScannersList; +} +export const VulnerableAsset = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + assetType: VulnerableAssetType, + hasBeenScanned: S.Boolean, + imageScanTag: S.NullOr(S.String), + scanners: VulnerableAssetScannersList, + }), +).annotate({ + identifier: "VulnerableAsset", +}) as any as S.Schema; + +/** IdP-group resource IDs to import. */ +export type ImportIdpGroupsRequestIdpGroupIdsList = Array; +export const ImportIdpGroupsRequestIdpGroupIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface ImportIdpGroupsRequest { + /** IdP-group resource IDs to import. */ + idpGroupIds: ImportIdpGroupsRequestIdpGroupIdsList; +} +export const ImportIdpGroupsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + idpGroupIds: ImportIdpGroupsRequestIdpGroupIdsList, + }).pipe( + T.Http({ method: "POST", uri: "/groups/import-from-idp", code: 200 }), + ), +).annotate({ + identifier: "ImportIdpGroupsRequest", +}) as any as S.Schema; + +export type ImportIdpGroupSuccessStatus = "SUCCESS"; +export const ImportIdpGroupSuccessStatus = /*@__PURE__*/ S.String; + +export interface ImportIdpGroupSuccess { + idpGroupId: string; + status: ImportIdpGroupSuccessStatus; + groupId: string; +} +export const ImportIdpGroupSuccess = /*@__PURE__*/ S.suspend(() => + S.Struct({ + idpGroupId: S.String, + status: ImportIdpGroupSuccessStatus, + groupId: S.String, + }), +).annotate({ + identifier: "ImportIdpGroupSuccess", +}) as any as S.Schema; + +export type ImportIdpGroupErrorStatus = "ERROR"; +export const ImportIdpGroupErrorStatus = /*@__PURE__*/ S.String; + +export type ImportIdpGroupFailureReason = "NOT_FOUND" | "IMPORT_FAILED"; +export const ImportIdpGroupFailureReason = /*@__PURE__*/ S.String; + +export interface ImportIdpGroupError { + idpGroupId: string; + status: ImportIdpGroupErrorStatus; + reason: ImportIdpGroupFailureReason; + message: string; +} +export const ImportIdpGroupError = /*@__PURE__*/ S.suspend(() => + S.Struct({ + idpGroupId: S.String, + status: ImportIdpGroupErrorStatus, + reason: ImportIdpGroupFailureReason, + message: S.String, + }), +).annotate({ + identifier: "ImportIdpGroupError", +}) as any as S.Schema; + +export type ImportIdpGroupResult = ImportIdpGroupSuccess | ImportIdpGroupError; +export const ImportIdpGroupResult = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type ImportIdpGroupsResponseResultsList = Array; +export const ImportIdpGroupsResponseResultsList = /*@__PURE__*/ S.Array( + ImportIdpGroupResult, +) as any as S.Schema; + +export interface ImportIdpGroupsResponse { + results: ImportIdpGroupsResponseResultsList; +} +export const ImportIdpGroupsResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: ImportIdpGroupsResponseResultsList, + }), +).annotate({ + identifier: "ImportIdpGroupsResponse", +}) as any as S.Schema; + +export type ListRequestReadableIssueIdMatchesAnyList = Array; +export const ListRequestReadableIssueIdMatchesAnyList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type ListRequestStatusMatchesAnyList = Array< + IssueStatus | (string & {}) +>; +export const ListRequestStatusMatchesAnyList = /*@__PURE__*/ S.Array( + IssueStatus, +) as any as S.Schema; + +export type ListRequestSeverityMatchesAnyList = Array< + IssueSeverity | (string & {}) +>; +export const ListRequestSeverityMatchesAnyList = /*@__PURE__*/ S.Array( + IssueSeverity, +) as any as S.Schema; + +export type ListRequestSourceMatchesAnyList = Array; +export const ListRequestSourceMatchesAnyList = /*@__PURE__*/ S.Array( + SourceType, +) as any as S.Schema; + +export type ListRequestTypeMatchesAnyList = Array< + StandardIssueType | (string & {}) +>; +export const ListRequestTypeMatchesAnyList = /*@__PURE__*/ S.Array( + StandardIssueType, +) as any as S.Schema; + +export type ListRequestOwnerIdMatchesAnyList = Array; +export const ListRequestOwnerIdMatchesAnyList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type IssueTemplate = "STANDARD_ISSUE" | "STANDARD_POAM"; +export const IssueTemplate = /*@__PURE__*/ S.String; + +export type ListRequestTemplateMatchesAnyList = Array< + IssueTemplate | (string & {}) +>; +export const ListRequestTemplateMatchesAnyList = /*@__PURE__*/ S.Array( + IssueTemplate, +) as any as S.Schema; + +export type ListRequestCloseReasonMatchesAnyList = Array< + ClosedReason | (string & {}) +>; +export const ListRequestCloseReasonMatchesAnyList = /*@__PURE__*/ S.Array( + ClosedReason, +) as any as S.Schema; + +export type ListRequestAuditIdMatchesAnyList = Array; +export const ListRequestAuditIdMatchesAnyList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type ListRequestControlIdMatchesAnyList = Array; +export const ListRequestControlIdMatchesAnyList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type IssueSortField = + | "dueDate" + | "createdDate" + | "detectedDate" + | "lastModifiedDate" + | "status" + | "severity"; +export const IssueSortField = /*@__PURE__*/ S.String; + +/** `"asc"` for ascending, `"desc"` for descending. */ +export type OrderDirection = "asc" | "desc"; +export const OrderDirection = /*@__PURE__*/ S.String; + +export interface ListRequest { + pageSize?: number; + pageCursor?: string; + /** Full-text search across issue title and description. */ + search?: string; + /** Filter to issues matching any of the provided readable issue IDs. */ + readableIssueIdMatchesAny?: ListRequestReadableIssueIdMatchesAnyList; + /** Filter to issues matching any of the provided statuses. */ + statusMatchesAny?: ListRequestStatusMatchesAnyList; + /** Filter to issues matching any of the provided severities. */ + severityMatchesAny?: ListRequestSeverityMatchesAnyList; + /** Filter to issues matching any of the provided sources. */ + sourceMatchesAny?: ListRequestSourceMatchesAnyList; + /** Filter to issues matching any of the provided types. */ + typeMatchesAny?: ListRequestTypeMatchesAnyList; + /** Filter to issues owned by any of the provided owner IDs. */ + ownerIdMatchesAny?: ListRequestOwnerIdMatchesAnyList; + /** Filter to issues matching any of the provided templates. */ + templateMatchesAny?: ListRequestTemplateMatchesAnyList; + /** Filter to issues closed for any of the provided reasons. Only applies to issues with a CLOSED status. */ + closeReasonMatchesAny?: ListRequestCloseReasonMatchesAnyList; + /** Filter to issues closed on or after this date. */ + closedAfterDate?: string; + /** Filter to issues closed on or before this date. */ + closedBeforeDate?: string; + /** Include issues without a due date. This is functionally a no-op if dueBeforeDate or dueAfterDate are not provided. */ + includeIssuesWithoutDueDate?: boolean; + /** Only include issues without a due date. This filter cannot be used in conjunction with dueBeforeDate or dueAfterDate. */ + includeOnlyIssuesWithoutDueDate?: boolean; + /** Filter to issues with a due date on or after this date. */ + dueAfterDate?: string; + /** Filter to issues with a due date on or before this date. */ + dueBeforeDate?: string; + /** Filter to issues detected on or after this date. */ + detectedAfterDate?: string; + /** Filter to issues detected on or before this date. */ + detectedBeforeDate?: string; + /** Filter to issues created on or after this date. */ + createdAfterDate?: string; + /** Filter to issues created on or before this date. */ + createdBeforeDate?: string; + /** Filter to issues sourced from any of the provided audit IDs. */ + auditIdMatchesAny?: ListRequestAuditIdMatchesAnyList; + /** Filter to issues mapped to any of the provided control IDs. */ + controlIdMatchesAny?: ListRequestControlIdMatchesAnyList; + /** Field to sort the results by. */ + orderBy?: IssueSortField | (string & {}); + /** Direction to sort the results in. One of `asc` or `desc`. Defaults to `asc`. */ + orderDirection?: OrderDirection | (string & {}); +} +export const ListRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + readableIssueIdMatchesAny: S.optional( + ListRequestReadableIssueIdMatchesAnyList.pipe(T.Query()), + ), + statusMatchesAny: S.optional( + ListRequestStatusMatchesAnyList.pipe(T.Query()), + ), + severityMatchesAny: S.optional( + ListRequestSeverityMatchesAnyList.pipe(T.Query()), + ), + sourceMatchesAny: S.optional( + ListRequestSourceMatchesAnyList.pipe(T.Query()), + ), + typeMatchesAny: S.optional(ListRequestTypeMatchesAnyList.pipe(T.Query())), + ownerIdMatchesAny: S.optional( + ListRequestOwnerIdMatchesAnyList.pipe(T.Query()), + ), + templateMatchesAny: S.optional( + ListRequestTemplateMatchesAnyList.pipe(T.Query()), + ), + closeReasonMatchesAny: S.optional( + ListRequestCloseReasonMatchesAnyList.pipe(T.Query()), + ), + closedAfterDate: S.optional(S.String.pipe(T.Query())), + closedBeforeDate: S.optional(S.String.pipe(T.Query())), + includeIssuesWithoutDueDate: S.optional(S.Boolean.pipe(T.Query())), + includeOnlyIssuesWithoutDueDate: S.optional(S.Boolean.pipe(T.Query())), + dueAfterDate: S.optional(S.String.pipe(T.Query())), + dueBeforeDate: S.optional(S.String.pipe(T.Query())), + detectedAfterDate: S.optional(S.String.pipe(T.Query())), + detectedBeforeDate: S.optional(S.String.pipe(T.Query())), + createdAfterDate: S.optional(S.String.pipe(T.Query())), + createdBeforeDate: S.optional(S.String.pipe(T.Query())), + auditIdMatchesAny: S.optional( + ListRequestAuditIdMatchesAnyList.pipe(T.Query()), + ), + controlIdMatchesAny: S.optional( + ListRequestControlIdMatchesAnyList.pipe(T.Query()), + ), + orderBy: S.optional(IssueSortField.pipe(T.Query())), + orderDirection: S.optional(OrderDirection.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/issues", code: 200 })), +).annotate({ identifier: "ListRequest" }) as any as S.Schema; + +export type PaginatedResponseIssueResultsDataList = Array; +export const PaginatedResponseIssueResultsDataList = /*@__PURE__*/ S.Array( + Issue, +) as any as S.Schema; + +export interface PaginatedResponseIssueResults { + data: PaginatedResponseIssueResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseIssueResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseIssueResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseIssueResults", +}) as any as S.Schema; + +export interface PaginatedResponseIssue { + results: PaginatedResponseIssueResults; +} +export const PaginatedResponseIssue = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseIssueResults, + }), +).annotate({ + identifier: "PaginatedResponseIssue", +}) as any as S.Schema; + +export interface ListAnswerLibraryEntriesRequest { + pageSize?: number; + pageCursor?: string; + /** Full-text search across question and answer. */ + q?: string; + /** Only include entries updated at or after this ISO 8601 timestamp. */ + lastUpdatedAfter?: string; + /** Only include entries updated at or before this ISO 8601 timestamp. */ + lastUpdatedBefore?: string; + /** JSON-encoded array of `{categoryId, tagId}` pairs. Entries matching any of the given tags are returned (OR filter). Discover valid `categoryId` and `tagId` values via `GET /v1/customer-trust/tag-categories` (to list categories) and `GET /v1/customer-trust/tag-categories/{tagCategoryId}` (to list tags within a category). */ + matchesTags?: string; + /** Only include entries expiring at or before this ISO 8601 timestamp. */ + expiresBefore?: string; + /** Only include entries expiring at or after this ISO 8601 timestamp. */ + expiresAfter?: string; +} +export const ListAnswerLibraryEntriesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + q: S.optional(S.String.pipe(T.Query())), + lastUpdatedAfter: S.optional(S.String.pipe(T.Query())), + lastUpdatedBefore: S.optional(S.String.pipe(T.Query())), + matchesTags: S.optional(S.String.pipe(T.Query())), + expiresBefore: S.optional(S.String.pipe(T.Query())), + expiresAfter: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/knowledge-base/answer-library", code: 200 }), + ), +).annotate({ + identifier: "ListAnswerLibraryEntriesRequest", +}) as any as S.Schema; + +export type PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResultsDataList = + Array; +export const PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResultsDataList = + /*@__PURE__*/ S.Array( + KnowledgeBaseAnswerLibraryEntryOutput, + ) as any as S.Schema; + +export interface PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResults { + data: PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResults", + }) as any as S.Schema; + +export interface PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutput { + results: PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResults; +} +export const PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutput = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutputResults, + }), + ).annotate({ + identifier: "PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutput", + }) as any as S.Schema; + +export type QuestionnaireAssignableUserRole = "owner" | "approver"; +export const QuestionnaireAssignableUserRole = /*@__PURE__*/ S.String; + +export interface ListAssignableUsersRequest { + /** Filter by role: "owner" or "approver". */ + role?: QuestionnaireAssignableUserRole | (string & {}); + /** Optional search string to filter users by name or email. */ + q?: string; +} +export const ListAssignableUsersRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + role: S.optional(QuestionnaireAssignableUserRole.pipe(T.Query())), + q: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/customer-trust/questionnaires/assignable-users", + code: 200, + }), + ), +).annotate({ + identifier: "ListAssignableUsersRequest", +}) as any as S.Schema; + +export type QuestionnaireAssignableUser = UserDefinedTagCategory; +export const QuestionnaireAssignableUser = UserDefinedTagCategory; + +export type QuestionnaireAssignableUsersResponseResultsDataList = + Array; +export const QuestionnaireAssignableUsersResponseResultsDataList = + /*@__PURE__*/ S.Array( + UserDefinedTagCategory, + ) as any as S.Schema; + +export interface QuestionnaireAssignableUsersResponseResults { + data: QuestionnaireAssignableUsersResponseResultsDataList; +} +export const QuestionnaireAssignableUsersResponseResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: QuestionnaireAssignableUsersResponseResultsDataList, + }), + ).annotate({ + identifier: "QuestionnaireAssignableUsersResponseResults", + }) as any as S.Schema; + +export interface QuestionnaireAssignableUsersResponse { + results: QuestionnaireAssignableUsersResponseResults; +} +export const QuestionnaireAssignableUsersResponse = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: QuestionnaireAssignableUsersResponseResults, + }), +).annotate({ + identifier: "QuestionnaireAssignableUsersResponse", +}) as any as S.Schema; + +export interface ListChatbotConversationsRequest { + slugId: string; + pageSize?: number; + pageCursor?: string; + /** Search conversations by message content. */ + searchString?: string; +} +export const ListChatbotConversationsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + searchString: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/chatbot/conversations", + code: 200, + }), + ), +).annotate({ + identifier: "ListChatbotConversationsRequest", +}) as any as S.Schema; + +export interface TrustCenterChatbotConversation { + /** Unique identifier for the conversation. */ + id: string; + /** The user's first message in the conversation. */ + firstMessage: string; + /** Total number of messages in the conversation. */ + numMessages: number; + /** Email address of the user who started the conversation, or null for public conversations. */ + userEmail: string | null; + /** Whether this conversation occurred on a public chatbot. */ + isPublicConversation: boolean; + /** Date and time the conversation was created. */ + createdAt: string; +} +export const TrustCenterChatbotConversation = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + firstMessage: S.String, + numMessages: S.Number, + userEmail: S.NullOr(S.String), + isPublicConversation: S.Boolean, + createdAt: S.String, + }), +).annotate({ + identifier: "TrustCenterChatbotConversation", +}) as any as S.Schema; + +export type PaginatedResponseTrustCenterChatbotConversationResultsDataList = + Array; +export const PaginatedResponseTrustCenterChatbotConversationResultsDataList = + /*@__PURE__*/ S.Array( + TrustCenterChatbotConversation, + ) as any as S.Schema; + +export interface PaginatedResponseTrustCenterChatbotConversationResults { + data: PaginatedResponseTrustCenterChatbotConversationResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTrustCenterChatbotConversationResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTrustCenterChatbotConversationResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterChatbotConversationResults", + }) as any as S.Schema; + +export interface PaginatedResponseTrustCenterChatbotConversation { + results: PaginatedResponseTrustCenterChatbotConversationResults; +} +export const PaginatedResponseTrustCenterChatbotConversation = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTrustCenterChatbotConversationResults, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterChatbotConversation", + }) as any as S.Schema; + +export interface ListComplianceFrameworksRequest { + slugId: string; +} +export const ListComplianceFrameworksRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/compliance-frameworks", + code: 200, + }), + ), +).annotate({ + identifier: "ListComplianceFrameworksRequest", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterComplianceFrameworkResultsList = + Array; +export const ArrayResponseTrustCenterComplianceFrameworkResultsList = + /*@__PURE__*/ S.Array( + TrustCenterComplianceFramework, + ) as any as S.Schema; + +export interface ArrayResponseTrustCenterComplianceFramework { + results: ArrayResponseTrustCenterComplianceFrameworkResultsList; +} +export const ArrayResponseTrustCenterComplianceFramework = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: ArrayResponseTrustCenterComplianceFrameworkResultsList, + }), + ).annotate({ + identifier: "ArrayResponseTrustCenterComplianceFramework", + }) as any as S.Schema; + +export interface ListConnectedIntegrationsRequest { + pageSize?: number; + pageCursor?: string; +} +export const ListConnectedIntegrationsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/integrations", code: 200 })), +).annotate({ + identifier: "ListConnectedIntegrationsRequest", +}) as any as S.Schema; + +export type PaginatedResponseIntegrationResultsDataList = Array; +export const PaginatedResponseIntegrationResultsDataList = + /*@__PURE__*/ S.Array( + Integration, + ) as any as S.Schema; + +export interface PaginatedResponseIntegrationResults { + data: PaginatedResponseIntegrationResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseIntegrationResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseIntegrationResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseIntegrationResults", +}) as any as S.Schema; + +export interface PaginatedResponseIntegration { + results: PaginatedResponseIntegrationResults; +} +export const PaginatedResponseIntegration = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseIntegrationResults, + }), +).annotate({ + identifier: "PaginatedResponseIntegration", +}) as any as S.Schema; + +export interface ListContractsRequest { + pageSize?: number; + pageCursor?: string; +} +export const ListContractsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/contracts", code: 200 })), +).annotate({ + identifier: "ListContractsRequest", +}) as any as S.Schema; + +export type PaginatedResponseContractResultsDataList = Array; +export const PaginatedResponseContractResultsDataList = /*@__PURE__*/ S.Array( + Contract, +) as any as S.Schema; + +export interface PaginatedResponseContractResults { + data: PaginatedResponseContractResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseContractResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseContractResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseContractResults", +}) as any as S.Schema; + +export interface PaginatedResponseContract { + results: PaginatedResponseContractResults; +} +export const PaginatedResponseContract = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseContractResults, + }), +).annotate({ + identifier: "PaginatedResponseContract", +}) as any as S.Schema; + +export type ListControlsRequestFrameworkMatchesAnyList = Array; +export const ListControlsRequestFrameworkMatchesAnyList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface ListControlsRequest { + pageSize?: number; + pageCursor?: string; + /** Includes all controls belonging to one of the provided framework values in frameworkMatchesAny. */ + frameworkMatchesAny?: ListControlsRequestFrameworkMatchesAnyList; +} +export const ListControlsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + frameworkMatchesAny: S.optional( + ListControlsRequestFrameworkMatchesAnyList.pipe(T.Query()), + ), + }).pipe(T.Http({ method: "GET", uri: "/controls", code: 200 })), +).annotate({ + identifier: "ListControlsRequest", +}) as any as S.Schema; + +export type PaginatedResponseControlResultsDataList = Array; +export const PaginatedResponseControlResultsDataList = /*@__PURE__*/ S.Array( + Control, +) as any as S.Schema; + +export interface PaginatedResponseControlResults { + data: PaginatedResponseControlResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseControlResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseControlResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseControlResults", +}) as any as S.Schema; + +export interface PaginatedResponseControl { + results: PaginatedResponseControlResults; +} +export const PaginatedResponseControl = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseControlResults, + }), +).annotate({ + identifier: "PaginatedResponseControl", +}) as any as S.Schema; + +export interface ListControlsForDocumentRequest { + documentId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListControlsForDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/documents/{documentId}/controls", + code: 200, + }), + ), +).annotate({ + identifier: "ListControlsForDocumentRequest", +}) as any as S.Schema; + +export interface ListControlsForFrameworkRequest { + frameworkId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListControlsForFrameworkRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + frameworkId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/frameworks/{frameworkId}/controls", + code: 200, + }), + ), +).annotate({ + identifier: "ListControlsForFrameworkRequest", +}) as any as S.Schema; + +export interface ListCustomerTrustAccountsRequest { + pageSize?: number; + pageCursor?: string; + searchString?: string; + isAutoApprovalEnabled?: boolean; + customFieldsFilter?: string; +} +export const ListCustomerTrustAccountsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + searchString: S.optional(S.String.pipe(T.Query())), + isAutoApprovalEnabled: S.optional(S.Boolean.pipe(T.Query())), + customFieldsFilter: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/customer-trust/accounts", code: 200 }), + ), +).annotate({ + identifier: "ListCustomerTrustAccountsRequest", +}) as any as S.Schema; + +export type PaginatedResponseCustomerTrustAccountVantaApiResultsDataList = + Array; +export const PaginatedResponseCustomerTrustAccountVantaApiResultsDataList = + /*@__PURE__*/ S.Array( + CustomerTrustAccountVantaApi, + ) as any as S.Schema; + +export interface PaginatedResponseCustomerTrustAccountVantaApiResults { + data: PaginatedResponseCustomerTrustAccountVantaApiResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseCustomerTrustAccountVantaApiResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseCustomerTrustAccountVantaApiResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseCustomerTrustAccountVantaApiResults", + }) as any as S.Schema; + +export interface PaginatedResponseCustomerTrustAccountVantaApi { + results: PaginatedResponseCustomerTrustAccountVantaApiResults; +} +export const PaginatedResponseCustomerTrustAccountVantaApi = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseCustomerTrustAccountVantaApiResults, + }), + ).annotate({ + identifier: "PaginatedResponseCustomerTrustAccountVantaApi", + }) as any as S.Schema; + +export interface ListDeactivatedControlsRequest { + pageSize?: number; + pageCursor?: string; +} +export const ListDeactivatedControlsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/controls/deactivated-controls", code: 200 }), + ), +).annotate({ + identifier: "ListDeactivatedControlsRequest", +}) as any as S.Schema; + +export interface ListDiscoveredVendorAccountsRequest { + discoveredVendorId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListDiscoveredVendorAccountsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + discoveredVendorId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/discovered-vendors/{discoveredVendorId}/accounts", + code: 200, + }), + ), +).annotate({ + identifier: "ListDiscoveredVendorAccountsRequest", +}) as any as S.Schema; + +export type DiscoveredVendorAccountTypeUSER = "USER"; +export const DiscoveredVendorAccountTypeUSER = /*@__PURE__*/ S.String; + +export interface DiscoveredVendorUser { + /** The associated user's unique ID. */ + id: string; + /** The associated user's email address. */ + email: string; + /** The associated user's display name . */ + displayName: string; + /** The account type. */ + type: DiscoveredVendorAccountTypeUSER; +} +export const DiscoveredVendorUser = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + email: S.String, + displayName: S.String, + type: DiscoveredVendorAccountTypeUSER, + }), +).annotate({ + identifier: "DiscoveredVendorUser", +}) as any as S.Schema; + +export type DiscoveredVendorAccountTypeCOMPUTER = "COMPUTER"; +export const DiscoveredVendorAccountTypeCOMPUTER = /*@__PURE__*/ S.String; + +export interface DiscoveredVendorComputer { + /** The associated computer's unique ID. */ + id: string; + /** The associated computer's display name. */ + displayName?: string; + /** The associated computer's owner. */ + owner: DiscoveredVendorUser | null; + /** The account type. */ + type: DiscoveredVendorAccountTypeCOMPUTER; +} +export const DiscoveredVendorComputer = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.optional(S.String), + owner: S.NullOr(DiscoveredVendorUser), + type: DiscoveredVendorAccountTypeCOMPUTER, + }), +).annotate({ + identifier: "DiscoveredVendorComputer", +}) as any as S.Schema; + +export type DiscoveredVendorAccount = + | DiscoveredVendorUser + | DiscoveredVendorComputer; +export const DiscoveredVendorAccount = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type PaginatedResponseDiscoveredVendorAccountResultsDataList = + Array; +export const PaginatedResponseDiscoveredVendorAccountResultsDataList = + /*@__PURE__*/ S.Array( + DiscoveredVendorAccount, + ) as any as S.Schema; + +export interface PaginatedResponseDiscoveredVendorAccountResults { + data: PaginatedResponseDiscoveredVendorAccountResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseDiscoveredVendorAccountResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseDiscoveredVendorAccountResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseDiscoveredVendorAccountResults", + }) as any as S.Schema; + +export interface PaginatedResponseDiscoveredVendorAccount { + results: PaginatedResponseDiscoveredVendorAccountResults; +} +export const PaginatedResponseDiscoveredVendorAccount = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: PaginatedResponseDiscoveredVendorAccountResults, + }), +).annotate({ + identifier: "PaginatedResponseDiscoveredVendorAccount", +}) as any as S.Schema; + +/** The scope of a discovered vendor. NEEDS_REVIEW: The vendor needs review IGNORED: The vendor was ignored REJECTED: The vendor was rejected */ +export type DiscoveredVendorScope = "NEEDS_REVIEW" | "IGNORED" | "REJECTED"; +export const DiscoveredVendorScope = /*@__PURE__*/ S.String; + +export interface ListDiscoveredVendorsRequest { + /** Defaults to "NEEDS_REVIEW" if not provided */ + scope?: DiscoveredVendorScope | (string & {}); + pageSize?: number; + pageCursor?: string; +} +export const ListDiscoveredVendorsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + scope: S.optional(DiscoveredVendorScope.pipe(T.Query())), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/discovered-vendors", code: 200 })), +).annotate({ + identifier: "ListDiscoveredVendorsRequest", +}) as any as S.Schema; + +/** The discovered vendor's category. */ +export type DiscoveredVendorCategory = Training; +export const DiscoveredVendorCategory = Training; + +/** The source of the discovered vendor. OKTA: The vendor was discovered via an Okta integration JAMF: The vendor was discovered via a JAMF integration GSUITE: The vendor was discovered via an GSuite integration VENDR: The vendor was discovered via a Vendr integration OFFICE: The vendor was discovered via a microsoft office integration */ +export type DiscoveredVendorSource = + | "OKTA" + | "JAMF" + | "GSUITE" + | "VENDR" + | "OFFICE"; +export const DiscoveredVendorSource = /*@__PURE__*/ S.String; + +/** Determines whether or not the vendor is ignored. */ +export interface DiscoveredVendorIgnored { + /** The date the discovered vendor was marked as ignored. */ + ignoredAtDate: string | null; + /** The reason the discovered vendor was ignored. */ + ignoredReason: string | null; + /** The user ID who ignored the discovered vendor. */ + ignoredByUserId: string | null; +} +export const DiscoveredVendorIgnored = /*@__PURE__*/ S.suspend(() => + S.Struct({ + ignoredAtDate: S.NullOr(S.String), + ignoredReason: S.NullOr(S.String), + ignoredByUserId: S.NullOr(S.String), + }), +).annotate({ + identifier: "DiscoveredVendorIgnored", +}) as any as S.Schema; + +/** Determines whether or not the vendor is rejected. */ +export interface DiscoveredVendorRejected { + /** The user ID who rejected the discovered vendor. */ + rejectedByUserId: string | null; + /** The reason the discovered vendor was rejected. */ + rejectedReason: string | null; + /** The date the discovered vendor was marked as rejected. */ + rejectedAtDate: string | null; +} +export const DiscoveredVendorRejected = /*@__PURE__*/ S.suspend(() => + S.Struct({ + rejectedByUserId: S.NullOr(S.String), + rejectedReason: S.NullOr(S.String), + rejectedAtDate: S.NullOr(S.String), + }), +).annotate({ + identifier: "DiscoveredVendorRejected", +}) as any as S.Schema; + +export interface DiscoveredVendor { + /** The discovered vendor's unique ID. */ + id: string; + /** The discovered vendor's display name . */ + name: string; + /** The discovered vendor's vendorNormalized or canonical name. This is used to group duplicate vendors together. */ + normalizedName: string; + /** The discovered vendor's category. */ + category: Training | null; + /** The discovered vendor's source . */ + source: DiscoveredVendorSource; + /** The discovered vendor's imported date. */ + discoveredDate: string; + /** The number of accounts in the discovered vendor. */ + numberOfAccounts: number; + /** Determines whether or not the vendor is ignored. */ + ignored: DiscoveredVendorIgnored | null; + /** Determines whether or not the vendor is rejected. */ + rejected: DiscoveredVendorRejected | null; +} +export const DiscoveredVendor = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + normalizedName: S.String, + category: S.NullOr(Training), + source: DiscoveredVendorSource, + discoveredDate: S.String, + numberOfAccounts: S.Number, + ignored: S.NullOr(DiscoveredVendorIgnored), + rejected: S.NullOr(DiscoveredVendorRejected), + }), +).annotate({ + identifier: "DiscoveredVendor", +}) as any as S.Schema; + +export type PaginatedResponseDiscoveredVendorResultsDataList = + Array; +export const PaginatedResponseDiscoveredVendorResultsDataList = + /*@__PURE__*/ S.Array( + DiscoveredVendor, + ) as any as S.Schema; + +export interface PaginatedResponseDiscoveredVendorResults { + data: PaginatedResponseDiscoveredVendorResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseDiscoveredVendorResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseDiscoveredVendorResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseDiscoveredVendorResults", +}) as any as S.Schema; + +export interface PaginatedResponseDiscoveredVendor { + results: PaginatedResponseDiscoveredVendorResults; +} +export const PaginatedResponseDiscoveredVendor = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseDiscoveredVendorResults, + }), +).annotate({ + identifier: "PaginatedResponseDiscoveredVendor", +}) as any as S.Schema; + +export type ListDocumentsRequestFrameworkMatchesAnyList = Array; +export const ListDocumentsRequestFrameworkMatchesAnyList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export type ListDocumentsRequestStatusMatchesAnyList = Array< + DocumentStatus | (string & {}) +>; +export const ListDocumentsRequestStatusMatchesAnyList = /*@__PURE__*/ S.Array( + DocumentStatus, +) as any as S.Schema; + +export interface ListDocumentsRequest { + pageSize?: number; + pageCursor?: string; + /** Includes all documents that match one of the provided framework values in frameworkMatchesAny. */ + frameworkMatchesAny?: ListDocumentsRequestFrameworkMatchesAnyList; + /** Includes all documents that match one of the provided status values in statusMatchesAny. */ + statusMatchesAny?: ListDocumentsRequestStatusMatchesAnyList; +} +export const ListDocumentsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + frameworkMatchesAny: S.optional( + ListDocumentsRequestFrameworkMatchesAnyList.pipe(T.Query()), + ), + statusMatchesAny: S.optional( + ListDocumentsRequestStatusMatchesAnyList.pipe(T.Query()), + ), + }).pipe(T.Http({ method: "GET", uri: "/documents", code: 200 })), +).annotate({ + identifier: "ListDocumentsRequest", +}) as any as S.Schema; + +export type PaginatedResponseDocumentResultsDataList = Array; +export const PaginatedResponseDocumentResultsDataList = /*@__PURE__*/ S.Array( + Document, +) as any as S.Schema; + +export interface PaginatedResponseDocumentResults { + data: PaginatedResponseDocumentResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseDocumentResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseDocumentResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseDocumentResults", +}) as any as S.Schema; + +export interface PaginatedResponseDocument { + results: PaginatedResponseDocumentResults; +} +export const PaginatedResponseDocument = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseDocumentResults, + }), +).annotate({ + identifier: "PaginatedResponseDocument", +}) as any as S.Schema; + +export interface ListDocumentsForControlRequest { + controlId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListDocumentsForControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/controls/{controlId}/documents", + code: 200, + }), + ), +).annotate({ + identifier: "ListDocumentsForControlRequest", +}) as any as S.Schema; + +export interface ListEventLogsRequest { + pageSize?: number; + pageCursor?: string; + /** Filter to event logs created at or after this ISO 8601 timestamp. */ + startDate?: string; +} +export const ListEventLogsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + startDate: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/event-logs", code: 200 })), +).annotate({ + identifier: "ListEventLogsRequest", +}) as any as S.Schema; + +/** The event's initiator. */ +export interface EventLogActor { + /** The actor's type. */ + type: string; + /** The actor's unique ID. */ + id: string; +} +export const EventLogActor = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: S.String, + id: S.String, + }), +).annotate({ identifier: "EventLogActor" }) as any as S.Schema; + +export interface EventLogTargetsItem { + /** The target's type. */ + type: string; + /** The target's unique ID. */ + id: string; +} +export const EventLogTargetsItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: S.String, + id: S.String, + }), +).annotate({ + identifier: "EventLogTargetsItem", +}) as any as S.Schema; + +/** The list of targets of the event. */ +export type EventLogTargetsList = Array; +export const EventLogTargetsList = /*@__PURE__*/ S.Array( + EventLogTargetsItem, +) as any as S.Schema; + +export interface EventLog { + /** The event log's unique ID. */ + id: string; + /** The event's initiator. */ + actor: EventLogActor; + /** The event's creation date. */ + date: string; + /** The event's action. */ + action: string; + /** The list of targets of the event. */ + targets: EventLogTargetsList; +} +export const EventLog = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + actor: EventLogActor, + date: S.String, + action: S.String, + targets: EventLogTargetsList, + }), +).annotate({ identifier: "EventLog" }) as any as S.Schema; + +export type PaginatedResponseEventLogResultsDataList = Array; +export const PaginatedResponseEventLogResultsDataList = /*@__PURE__*/ S.Array( + EventLog, +) as any as S.Schema; + +export interface PaginatedResponseEventLogResults { + data: PaginatedResponseEventLogResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseEventLogResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseEventLogResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseEventLogResults", +}) as any as S.Schema; + +export interface PaginatedResponseEventLog { + results: PaginatedResponseEventLogResults; +} +export const PaginatedResponseEventLog = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseEventLogResults, + }), +).annotate({ + identifier: "PaginatedResponseEventLog", +}) as any as S.Schema; + +export interface ListFilesForDocumentRequest { + documentId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListFilesForDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/documents/{documentId}/uploads", + code: 200, + }), + ), +).annotate({ + identifier: "ListFilesForDocumentRequest", +}) as any as S.Schema; + +/** The actor who uploaded this document. It could be a user or an app. */ +export type UploadedFileTUploadedBy = VendorDocumentUploadedBy; +export const UploadedFileTUploadedBy = VendorDocumentUploadedBy; + +export interface UploadedFileT { + /** Unique identifier for the document. */ + id: string; + /** The file name of the document. */ + fileName: string | null; + /** The document's title. */ + title: string; + /** The document's description */ + description: string | null; + /** Mime type of the document. */ + mimeType: string; + /** The actor who uploaded this document. It could be a user or an app. */ + uploadedBy: VendorDocumentUploadedBy | null; + /** Date of when the document was uploaded. */ + creationDate: string; + /** Date when the document was last updated. */ + updatedDate: string; + /** Date of when the document was deleted. Is set to null if the document has not been deleted. */ + deletionDate: string | null; + /** The document's effective date. */ + effectiveDate: string | null; + /** The document's URL. */ + url: string; +} +export const UploadedFileT = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + fileName: S.NullOr(S.String), + title: S.String, + description: S.NullOr(S.String), + mimeType: S.String, + uploadedBy: S.NullOr(VendorDocumentUploadedBy), + creationDate: S.String, + updatedDate: S.String, + deletionDate: S.NullOr(S.String), + effectiveDate: S.NullOr(S.String), + url: S.String, + }), +).annotate({ identifier: "UploadedFileT" }) as any as S.Schema; + +export type PaginatedResponseUploadedFileTResultsDataList = + Array; +export const PaginatedResponseUploadedFileTResultsDataList = + /*@__PURE__*/ S.Array( + UploadedFileT, + ) as any as S.Schema; + +export interface PaginatedResponseUploadedFileTResults { + data: PaginatedResponseUploadedFileTResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseUploadedFileTResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseUploadedFileTResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseUploadedFileTResults", +}) as any as S.Schema; + +export interface PaginatedResponseUploadedFileT { + results: PaginatedResponseUploadedFileTResults; +} +export const PaginatedResponseUploadedFileT = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseUploadedFileTResults, + }), +).annotate({ + identifier: "PaginatedResponseUploadedFileT", +}) as any as S.Schema; + +export interface ListFrameworksRequest { + pageSize?: number; + pageCursor?: string; +} +export const ListFrameworksRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/frameworks", code: 200 })), +).annotate({ + identifier: "ListFrameworksRequest", +}) as any as S.Schema; + +export interface Framework { + /** The framework's unique ID. */ + id: string; + /** The framework's display name. */ + displayName: string; + /** The short version of the framework's display name. */ + shorthandName: string; + /** The framework's description. */ + description: string; + /** The number of completed controls in the framework. */ + numControlsCompleted: number; + /** The total number of controls in the framework. */ + numControlsTotal: number; + /** The number of passing documents in the framework. */ + numDocumentsPassing: number; + /** The total number of documents in the framework. */ + numDocumentsTotal: number; + /** The number of passing tests in the framework. */ + numTestsPassing: number; + /** The total number of tests in the framework. */ + numTestsTotal: number; +} +export const Framework = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + displayName: S.String, + shorthandName: S.String, + description: S.String, + numControlsCompleted: S.Number, + numControlsTotal: S.Number, + numDocumentsPassing: S.Number, + numDocumentsTotal: S.Number, + numTestsPassing: S.Number, + numTestsTotal: S.Number, + }), +).annotate({ identifier: "Framework" }) as any as S.Schema; + +export type PaginatedResponseFrameworkResultsDataList = Array; +export const PaginatedResponseFrameworkResultsDataList = /*@__PURE__*/ S.Array( + Framework, +) as any as S.Schema; + +export interface PaginatedResponseFrameworkResults { + data: PaginatedResponseFrameworkResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseFrameworkResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseFrameworkResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseFrameworkResults", +}) as any as S.Schema; + +export interface PaginatedResponseFramework { + results: PaginatedResponseFrameworkResults; +} +export const PaginatedResponseFramework = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseFrameworkResults, + }), +).annotate({ + identifier: "PaginatedResponseFramework", +}) as any as S.Schema; + +export type ListImportableIdpGroupsRequestIntegrationIdList = Array; +export const ListImportableIdpGroupsRequestIntegrationIdList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface ListImportableIdpGroupsRequest { + pageSize?: number; + pageCursor?: string; + search?: string; + integrationId?: ListImportableIdpGroupsRequestIntegrationIdList; +} +export const ListImportableIdpGroupsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + search: S.optional(S.String.pipe(T.Query())), + integrationId: S.optional( + ListImportableIdpGroupsRequestIntegrationIdList.pipe(T.Query()), + ), + }).pipe( + T.Http({ method: "GET", uri: "/groups/importable-idp-groups", code: 200 }), + ), +).annotate({ + identifier: "ListImportableIdpGroupsRequest", +}) as any as S.Schema; + +export interface ImportableIdpGroup { + id: string; + name: string; + integrationId: string; + externalAccountId: string | null; +} +export const ImportableIdpGroup = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + integrationId: S.String, + externalAccountId: S.NullOr(S.String), + }), +).annotate({ + identifier: "ImportableIdpGroup", +}) as any as S.Schema; + +export type PaginatedImportableIdpGroupResponseResultsDataList = + Array; +export const PaginatedImportableIdpGroupResponseResultsDataList = + /*@__PURE__*/ S.Array( + ImportableIdpGroup, + ) as any as S.Schema; + +export interface PaginatedImportableIdpGroupResponseResults { + data: PaginatedImportableIdpGroupResponseResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedImportableIdpGroupResponseResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedImportableIdpGroupResponseResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedImportableIdpGroupResponseResults", + }) as any as S.Schema; + +export interface PaginatedImportableIdpGroupResponse { + results: PaginatedImportableIdpGroupResponseResults; +} +export const PaginatedImportableIdpGroupResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedImportableIdpGroupResponseResults, + }), +).annotate({ + identifier: "PaginatedImportableIdpGroupResponse", +}) as any as S.Schema; + +export type KnowledgeBaseResourceTypeFilter = "FILE" | "URL"; +export const KnowledgeBaseResourceTypeFilter = /*@__PURE__*/ S.String; + +export type ListKnowledgeBaseResourcesRequestTypeMatchesAnyList = Array< + KnowledgeBaseResourceTypeFilter | (string & {}) +>; +export const ListKnowledgeBaseResourcesRequestTypeMatchesAnyList = + /*@__PURE__*/ S.Array( + KnowledgeBaseResourceTypeFilter, + ) as any as S.Schema; + +export interface ListKnowledgeBaseResourcesRequest { + pageSize?: number; + pageCursor?: string; + /** Full-text search across resource titles. */ + q?: string; + /** Filter to FILE and/or URL resources. Repeat the param to allow either. */ + typeMatchesAny?: ListKnowledgeBaseResourcesRequestTypeMatchesAnyList; + /** Only include resources updated at or after this ISO 8601 timestamp. */ + lastUpdatedAfter?: string; + /** Only include resources updated at or before this ISO 8601 timestamp. */ + lastUpdatedBefore?: string; + /** JSON-encoded array of `{categoryId, tagId}` pairs. Tags within the same category are OR'd together; tags across different categories are AND'd. For example, passing two tags from "Framework" and one tag from "Region" matches resources that have either of the two frameworks AND the given region. Discover valid `categoryId` and `tagId` values via `GET /v1/customer-trust/tag-categories` (to list categories) and `GET /v1/customer-trust/tag-categories/{tagCategoryId}` (to list tags within a category). */ + matchesTags?: string; + /** Only include resources expiring at or before this ISO 8601 timestamp. */ + expiresBefore?: string; + /** Only include resources expiring at or after this ISO 8601 timestamp. */ + expiresAfter?: string; +} +export const ListKnowledgeBaseResourcesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + q: S.optional(S.String.pipe(T.Query())), + typeMatchesAny: S.optional( + ListKnowledgeBaseResourcesRequestTypeMatchesAnyList.pipe(T.Query()), + ), + lastUpdatedAfter: S.optional(S.String.pipe(T.Query())), + lastUpdatedBefore: S.optional(S.String.pipe(T.Query())), + matchesTags: S.optional(S.String.pipe(T.Query())), + expiresBefore: S.optional(S.String.pipe(T.Query())), + expiresAfter: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/knowledge-base/resources", code: 200 }), + ), +).annotate({ + identifier: "ListKnowledgeBaseResourcesRequest", +}) as any as S.Schema; + +export type PaginatedResponseTrustKnowledgeBaseResourceOutputResultsDataList = + Array; +export const PaginatedResponseTrustKnowledgeBaseResourceOutputResultsDataList = + /*@__PURE__*/ S.Array( + TrustKnowledgeBaseResourceOutput, + ) as any as S.Schema; + +export interface PaginatedResponseTrustKnowledgeBaseResourceOutputResults { + data: PaginatedResponseTrustKnowledgeBaseResourceOutputResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTrustKnowledgeBaseResourceOutputResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTrustKnowledgeBaseResourceOutputResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTrustKnowledgeBaseResourceOutputResults", + }) as any as S.Schema; + +export interface PaginatedResponseTrustKnowledgeBaseResourceOutput { + results: PaginatedResponseTrustKnowledgeBaseResourceOutputResults; +} +export const PaginatedResponseTrustKnowledgeBaseResourceOutput = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTrustKnowledgeBaseResourceOutputResults, + }), + ).annotate({ + identifier: "PaginatedResponseTrustKnowledgeBaseResourceOutput", + }) as any as S.Schema; + +export interface ListLinksForDocumentRequest { + documentId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListLinksForDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/documents/{documentId}/links", code: 200 }), + ), +).annotate({ + identifier: "ListLinksForDocumentRequest", +}) as any as S.Schema; + +export type PaginatedResponseUploadedLinkResultsDataList = Array; +export const PaginatedResponseUploadedLinkResultsDataList = + /*@__PURE__*/ S.Array( + UploadedLink, + ) as any as S.Schema; + +export interface PaginatedResponseUploadedLinkResults { + data: PaginatedResponseUploadedLinkResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseUploadedLinkResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseUploadedLinkResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseUploadedLinkResults", +}) as any as S.Schema; + +export interface PaginatedResponseUploadedLink { + results: PaginatedResponseUploadedLinkResults; +} +export const PaginatedResponseUploadedLink = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseUploadedLinkResults, + }), +).annotate({ + identifier: "PaginatedResponseUploadedLink", +}) as any as S.Schema; + +/** Enum representing computer compliance statuses that can be utilized as a filter. The meanings are as follows: AV_NOT_INSTALLED: The computer does not have antivirus software installed. HD_NOT_ENCRYPTED: The computer's harddrive is not encrypted. LAST_CHECK_OVER_14_DAYS: No data has been received from computer for over 14 days. PWM_NOT_INSTALLED: The computer does not have a password manager installed. SCREENLOCK_NOT_CONFIGURED: The computer does not have screenlock configured appropriately. */ +export type ComputerStatusFilter = + | "PWM_NOT_INSTALLED" + | "HD_NOT_ENCRYPTED" + | "AV_NOT_INSTALLED" + | "SCREENLOCK_NOT_CONFIGURED" + | "LAST_CHECK_OVER_14_DAYS"; +export const ComputerStatusFilter = /*@__PURE__*/ S.String; + +export type ListMonitoredComputersRequestComplianceStatusFilterMatchesAnyList = + Array; +export const ListMonitoredComputersRequestComplianceStatusFilterMatchesAnyList = + /*@__PURE__*/ S.Array( + ComputerStatusFilter, + ) as any as S.Schema; + +export interface ListMonitoredComputersRequest { + pageSize?: number; + pageCursor?: string; + /** Filters for monitored computers matching any status declared in the filter. */ + complianceStatusFilterMatchesAny?: ListMonitoredComputersRequestComplianceStatusFilterMatchesAnyList; +} +export const ListMonitoredComputersRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + complianceStatusFilterMatchesAny: S.optional( + ListMonitoredComputersRequestComplianceStatusFilterMatchesAnyList.pipe( + T.Query(), + ), + ), + }).pipe(T.Http({ method: "GET", uri: "/monitored-computers", code: 200 })), +).annotate({ + identifier: "ListMonitoredComputersRequest", +}) as any as S.Schema; + +export type PaginatedResponseMonitoredComputerResultsDataList = + Array; +export const PaginatedResponseMonitoredComputerResultsDataList = + /*@__PURE__*/ S.Array( + MonitoredComputer, + ) as any as S.Schema; + +export interface PaginatedResponseMonitoredComputerResults { + data: PaginatedResponseMonitoredComputerResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseMonitoredComputerResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseMonitoredComputerResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseMonitoredComputerResults", + }) as any as S.Schema; + +export interface PaginatedResponseMonitoredComputer { + results: PaginatedResponseMonitoredComputerResults; +} +export const PaginatedResponseMonitoredComputer = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseMonitoredComputerResults, + }), +).annotate({ + identifier: "PaginatedResponseMonitoredComputer", +}) as any as S.Schema; + +export type ListPeopleRequestTasksSummaryStatusMatchesAnyList = Array< + TasksSummaryStatus | (string & {}) +>; +export const ListPeopleRequestTasksSummaryStatusMatchesAnyList = + /*@__PURE__*/ S.Array( + TasksSummaryStatus, + ) as any as S.Schema; + +/** The type a task summary falls into. COMPLETE_TRAININGS: The task summary containing security trainings. ACCEPT_POLICIES: The task summary containing policy acceptance. COMPLETE_CUSTOM_TASKS: The task summary containing custom tasks. INSTALL_DEVICE_MONITORING: The task summary containing device monitoring installation. COMPLETE_BACKGROUND_CHECKS: The task summary containing background checks. */ +export type TaskType = + | "COMPLETE_TRAININGS" + | "ACCEPT_POLICIES" + | "COMPLETE_CUSTOM_TASKS" + | "COMPLETE_CUSTOM_OFFBOARDING_TASKS" + | "INSTALL_DEVICE_MONITORING" + | "COMPLETE_BACKGROUND_CHECKS"; +export const TaskType = /*@__PURE__*/ S.String; + +export type ListPeopleRequestTaskTypeMatchesAnyList = Array< + TaskType | (string & {}) +>; +export const ListPeopleRequestTaskTypeMatchesAnyList = /*@__PURE__*/ S.Array( + TaskType, +) as any as S.Schema; + +export type ListPeopleRequestTaskStatusMatchesAnyList = Array< + TaskStatus | (string & {}) +>; +export const ListPeopleRequestTaskStatusMatchesAnyList = /*@__PURE__*/ S.Array( + TaskStatus, +) as any as S.Schema; + +export type ListPeopleRequestGroupIdsMatchesAnyList = Array; +export const ListPeopleRequestGroupIdsMatchesAnyList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface ListPeopleRequest { + pageSize?: number; + pageCursor?: string; + /** Filter individuals by those whose tasksSummary status is any of the provided values. */ + tasksSummaryStatusMatchesAny?: ListPeopleRequestTasksSummaryStatusMatchesAnyList; + /** Requires taskStatusMatchesAny. Includes all people for whom any of the provided taskType values in taskTypeMatchesAny is any of the provided taskStatus values in taskStatusMatchesAny. */ + taskTypeMatchesAny?: ListPeopleRequestTaskTypeMatchesAnyList; + /** Requires taskTypeMatchesAny. Includes all people for whom any of the provided taskType values in taskTypeMatchesAny is any of the provided taskStatus values in taskStatusMatchesAny. */ + taskStatusMatchesAny?: ListPeopleRequestTaskStatusMatchesAnyList; + /** Filter people by email address, first name, or last name (partial match, case-insensitive). */ + emailAndNameFilter?: string; + /** Filter people matching any of the given group IDs. */ + groupIdsMatchesAny?: ListPeopleRequestGroupIdsMatchesAnyList; + /** Filter people matching the given employment status. */ + employmentStatus?: EmploymentStatus | (string & {}); +} +export const ListPeopleRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + tasksSummaryStatusMatchesAny: S.optional( + ListPeopleRequestTasksSummaryStatusMatchesAnyList.pipe(T.Query()), + ), + taskTypeMatchesAny: S.optional( + ListPeopleRequestTaskTypeMatchesAnyList.pipe(T.Query()), + ), + taskStatusMatchesAny: S.optional( + ListPeopleRequestTaskStatusMatchesAnyList.pipe(T.Query()), + ), + emailAndNameFilter: S.optional(S.String.pipe(T.Query())), + groupIdsMatchesAny: S.optional( + ListPeopleRequestGroupIdsMatchesAnyList.pipe(T.Query()), + ), + employmentStatus: S.optional(EmploymentStatus.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/people", code: 200 })), +).annotate({ + identifier: "ListPeopleRequest", +}) as any as S.Schema; + +export type PaginatedResponsePersonResultsDataList = Array; +export const PaginatedResponsePersonResultsDataList = /*@__PURE__*/ S.Array( + Person, +) as any as S.Schema; + +export interface PaginatedResponsePersonResults { + data: PaginatedResponsePersonResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponsePersonResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponsePersonResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponsePersonResults", +}) as any as S.Schema; + +export interface PaginatedResponsePerson { + results: PaginatedResponsePersonResults; +} +export const PaginatedResponsePerson = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponsePersonResults, + }), +).annotate({ + identifier: "PaginatedResponsePerson", +}) as any as S.Schema; + +export interface ListPersonGroupsRequest { + pageSize?: number; + pageCursor?: string; +} +export const ListPersonGroupsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/groups", code: 200 })), +).annotate({ + identifier: "ListPersonGroupsRequest", +}) as any as S.Schema; + +export type PaginatedResponseGroupResultsDataList = Array; +export const PaginatedResponseGroupResultsDataList = /*@__PURE__*/ S.Array( + Group, +) as any as S.Schema; + +export interface PaginatedResponseGroupResults { + data: PaginatedResponseGroupResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseGroupResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseGroupResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseGroupResults", +}) as any as S.Schema; + +export interface PaginatedResponseGroup { + results: PaginatedResponseGroupResults; +} +export const PaginatedResponseGroup = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseGroupResults, + }), +).annotate({ + identifier: "PaginatedResponseGroup", +}) as any as S.Schema; + +export interface ListPoliciesRequest { + pageSize?: number; + pageCursor?: string; +} +export const ListPoliciesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/policies", code: 200 })), +).annotate({ + identifier: "ListPoliciesRequest", +}) as any as S.Schema; + +export type PaginatedResponsePolicyResultsDataList = Array; +export const PaginatedResponsePolicyResultsDataList = /*@__PURE__*/ S.Array( + Policy, +) as any as S.Schema; + +export interface PaginatedResponsePolicyResults { + data: PaginatedResponsePolicyResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponsePolicyResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponsePolicyResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponsePolicyResults", +}) as any as S.Schema; + +export interface PaginatedResponsePolicy { + results: PaginatedResponsePolicyResults; +} +export const PaginatedResponsePolicy = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponsePolicyResults, + }), +).annotate({ + identifier: "PaginatedResponsePolicy", +}) as any as S.Schema; + +export interface ListQuestionnaireResponsesRequest { + questionnaireId: string; + pageSize?: number; + pageCursor?: string; + /** Filter responses by question text (case-insensitive, partial match). */ + q?: string; +} +export const ListQuestionnaireResponsesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaireId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + q: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/customer-trust/questionnaires/{questionnaireId}/responses", + code: 200, + }), + ), +).annotate({ + identifier: "ListQuestionnaireResponsesRequest", +}) as any as S.Schema; + +export type PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResultsDataList = + Array; +export const PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResultsDataList = + /*@__PURE__*/ S.Array( + QuestionnaireResponseWithoutViewerPermissions, + ) as any as S.Schema; + +export interface PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResults { + data: PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: + "PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResults", + }) as any as S.Schema; + +export interface PaginatedResponseQuestionnaireResponseWithoutViewerPermissions { + results: PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResults; +} +export const PaginatedResponseQuestionnaireResponseWithoutViewerPermissions = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: + PaginatedResponseQuestionnaireResponseWithoutViewerPermissionsResults, + }), + ).annotate({ + identifier: + "PaginatedResponseQuestionnaireResponseWithoutViewerPermissions", + }) as any as S.Schema; + +export type ListQuestionnairesRequestStatusMatchesAnyList = Array< + QuestionnaireStatus | (string & {}) +>; +export const ListQuestionnairesRequestStatusMatchesAnyList = + /*@__PURE__*/ S.Array( + QuestionnaireStatus, + ) as any as S.Schema; + +export type ListQuestionnairesRequestTypeMatchesAnyList = Array< + CustomerTrustQuestionnaireType | (string & {}) +>; +export const ListQuestionnairesRequestTypeMatchesAnyList = + /*@__PURE__*/ S.Array( + CustomerTrustQuestionnaireType, + ) as any as S.Schema; + +export type ListQuestionnairesRequestOwnerIdMatchesAnyList = Array; +export const ListQuestionnairesRequestOwnerIdMatchesAnyList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export type ListQuestionnairesRequestApproverIdMatchesAnyList = Array; +export const ListQuestionnairesRequestApproverIdMatchesAnyList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface ListQuestionnairesRequest { + pageSize?: number; + pageCursor?: string; + /** Filter questionnaires by display name (case-insensitive, partial match). */ + q?: string; + /** Filter questionnaires matching any of the provided statuses. */ + statusMatchesAny?: ListQuestionnairesRequestStatusMatchesAnyList; + /** Filter questionnaires matching any of the provided types. */ + typeMatchesAny?: ListQuestionnairesRequestTypeMatchesAnyList; + /** Filter to questionnaires created after this date (ISO 8601 string). */ + createdAfter?: string; + /** Filter to questionnaires created before this date (ISO 8601 string). */ + createdBefore?: string; + /** Filter to questionnaires owned by any of the provided user IDs. */ + ownerIdMatchesAny?: ListQuestionnairesRequestOwnerIdMatchesAnyList; + /** Filter to questionnaires with an approver matching any of the provided user IDs. */ + approverIdMatchesAny?: ListQuestionnairesRequestApproverIdMatchesAnyList; +} +export const ListQuestionnairesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + q: S.optional(S.String.pipe(T.Query())), + statusMatchesAny: S.optional( + ListQuestionnairesRequestStatusMatchesAnyList.pipe(T.Query()), + ), + typeMatchesAny: S.optional( + ListQuestionnairesRequestTypeMatchesAnyList.pipe(T.Query()), + ), + createdAfter: S.optional(S.String.pipe(T.Query())), + createdBefore: S.optional(S.String.pipe(T.Query())), + ownerIdMatchesAny: S.optional( + ListQuestionnairesRequestOwnerIdMatchesAnyList.pipe(T.Query()), + ), + approverIdMatchesAny: S.optional( + ListQuestionnairesRequestApproverIdMatchesAnyList.pipe(T.Query()), + ), + }).pipe( + T.Http({ method: "GET", uri: "/customer-trust/questionnaires", code: 200 }), + ), +).annotate({ + identifier: "ListQuestionnairesRequest", +}) as any as S.Schema; + +export type PaginatedResponseCustomerTrustQuestionnaireResultsDataList = + Array; +export const PaginatedResponseCustomerTrustQuestionnaireResultsDataList = + /*@__PURE__*/ S.Array( + CustomerTrustQuestionnaire, + ) as any as S.Schema; + +export interface PaginatedResponseCustomerTrustQuestionnaireResults { + data: PaginatedResponseCustomerTrustQuestionnaireResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseCustomerTrustQuestionnaireResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseCustomerTrustQuestionnaireResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseCustomerTrustQuestionnaireResults", + }) as any as S.Schema; + +export interface PaginatedResponseCustomerTrustQuestionnaire { + results: PaginatedResponseCustomerTrustQuestionnaireResults; +} +export const PaginatedResponseCustomerTrustQuestionnaire = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseCustomerTrustQuestionnaireResults, + }), + ).annotate({ + identifier: "PaginatedResponseCustomerTrustQuestionnaire", + }) as any as S.Schema; + +export interface ListResourceKindSummariesRequest { + /** Unique identifier of the integration */ + integrationId: string; +} +export const ListResourceKindSummariesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/integrations/{integrationId}/resource-kinds", + code: 200, + }), + ), +).annotate({ + identifier: "ListResourceKindSummariesRequest", +}) as any as S.Schema; + +export interface ResourceKindSummary { + /** The unique identifier for the Integration that ingests this resource. */ + integrationId: string; + /** The identifier for the resource type, unique within the scope of an Integration. */ + resourceKind: string; + /** Whether resources of this type may be scoped out of an audit. */ + isScopable: boolean; + /** Whether resources of this type may be assigned a description. */ + canUpdateDescription: boolean; + /** Whether resources of this type may be assigned an owner. */ + canUpdateOwner: boolean; +} +export const ResourceKindSummary = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String, + resourceKind: S.String, + isScopable: S.Boolean, + canUpdateDescription: S.Boolean, + canUpdateOwner: S.Boolean, + }), +).annotate({ + identifier: "ResourceKindSummary", +}) as any as S.Schema; + +export type ListResourceKindSummariesResponseBodyList = + Array; +export const ListResourceKindSummariesResponseBodyList = /*@__PURE__*/ S.Array( + ResourceKindSummary, +) as any as S.Schema; + +export type ListResourceKindSummariesResponse = + ListResourceKindSummariesResponseBodyList; +export const ListResourceKindSummariesResponse = /*@__PURE__*/ S.suspend(() => + ListResourceKindSummariesResponseBodyList.pipe(T.RawResponseRoot()), +).annotate({ + identifier: "ListResourceKindSummariesResponse", +}) as any as S.Schema; + +export interface ListResourcesRequest { + /** Unique identifier of the integration. */ + integrationId: string; + /** Unique identifier of the integration resource type. */ + resourceKind: string; + /** Unique identifier of the integration connection. */ + connectionId?: string; + /** Filter resources that have a description. If omitted, this will return resources both with and without a description. */ + hasDescription?: boolean; + /** Filter resources that have an owner. If omitted, this will return resources both with and without an owner. */ + hasOwner?: boolean; + /** Filter resources that are in scope. If omitted, this will return resources both in and out of scope. */ + isInScope?: boolean; + pageSize?: number; + pageCursor?: string; +} +export const ListResourcesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String.pipe(T.Label()), + resourceKind: S.String.pipe(T.Label()), + connectionId: S.optional(S.String.pipe(T.Query())), + hasDescription: S.optional(S.Boolean.pipe(T.Query())), + hasOwner: S.optional(S.Boolean.pipe(T.Query())), + isInScope: S.optional(S.Boolean.pipe(T.Query())), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/integrations/{integrationId}/resource-kinds/{resourceKind}/resources", + code: 200, + }), + ), +).annotate({ + identifier: "ListResourcesRequest", +}) as any as S.Schema; + +export type PaginatedResponseAnyResourceResultsDataList = Array; +export const PaginatedResponseAnyResourceResultsDataList = + /*@__PURE__*/ S.Array( + AnyResource, + ) as any as S.Schema; + +export interface PaginatedResponseAnyResourceResults { + data: PaginatedResponseAnyResourceResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseAnyResourceResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseAnyResourceResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseAnyResourceResults", +}) as any as S.Schema; + +export interface PaginatedResponseAnyResource { + results: PaginatedResponseAnyResourceResults; +} +export const PaginatedResponseAnyResource = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseAnyResourceResults, + }), +).annotate({ + identifier: "PaginatedResponseAnyResource", +}) as any as S.Schema; + +export type ListRiskScenarioRequestOwnerMatchesAnyList = Array; +export const ListRiskScenarioRequestOwnerMatchesAnyList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export type ListRiskScenarioRequestCategoryMatchesAnyList = Array; +export const ListRiskScenarioRequestCategoryMatchesAnyList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export type UNCATEGORIZED = "Uncategorized"; +export const UNCATEGORIZED = /*@__PURE__*/ S.String; + +export type ListRiskScenarioRequestCiaCategoryMatchesAnyItem = + | CIA + | UNCATEGORIZED; +export const ListRiskScenarioRequestCiaCategoryMatchesAnyItem = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type ListRiskScenarioRequestCiaCategoryMatchesAnyList = + Array; +export const ListRiskScenarioRequestCiaCategoryMatchesAnyList = + /*@__PURE__*/ S.Array( + ListRiskScenarioRequestCiaCategoryMatchesAnyItem, + ) as any as S.Schema; + +export type NOTREATMENTTYPE = "No treatment type"; +export const NOTREATMENTTYPE = /*@__PURE__*/ S.String; + +export type ListRiskScenarioRequestTreatmentTypeMatchesAnyItem = + | Treatment + | NOTREATMENTTYPE; +export const ListRiskScenarioRequestTreatmentTypeMatchesAnyItem = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export type ListRiskScenarioRequestTreatmentTypeMatchesAnyList = + Array; +export const ListRiskScenarioRequestTreatmentTypeMatchesAnyList = + /*@__PURE__*/ S.Array( + ListRiskScenarioRequestTreatmentTypeMatchesAnyItem, + ) as any as S.Schema; + +export type ScoreGroup = "Very low" | "Low" | "Med" | "High" | "Critical"; +export const ScoreGroup = /*@__PURE__*/ S.String; + +export type ListRiskScenarioRequestInherentScoreGroupMatchesAnyList = Array< + ScoreGroup | (string & {}) +>; +export const ListRiskScenarioRequestInherentScoreGroupMatchesAnyList = + /*@__PURE__*/ S.Array( + ScoreGroup, + ) as any as S.Schema; + +export type ListRiskScenarioRequestResidualScoreGroupMatchesAnyList = Array< + ScoreGroup | (string & {}) +>; +export const ListRiskScenarioRequestResidualScoreGroupMatchesAnyList = + /*@__PURE__*/ S.Array( + ScoreGroup, + ) as any as S.Schema; + +export type ListRiskScenarioRequestReviewStatusMatchesAnyList = Array< + ReviewStatus | (string & {}) +>; +export const ListRiskScenarioRequestReviewStatusMatchesAnyList = + /*@__PURE__*/ S.Array( + ReviewStatus, + ) as any as S.Schema; + +export type ListRiskScenarioRequestOrderBy = "description" | "createdAt"; +export const ListRiskScenarioRequestOrderBy = /*@__PURE__*/ S.String; + +export interface ListRiskScenarioRequest { + pageSize?: number; + pageCursor?: string; + includeIgnored?: boolean; + /** Use "No owner" to filter scenarios without owner assigned. */ + ownerMatchesAny?: ListRiskScenarioRequestOwnerMatchesAnyList; + searchString?: string; + /** Use "Uncategorized" to filter scenarios without any category. */ + categoryMatchesAny?: ListRiskScenarioRequestCategoryMatchesAnyList; + /** Use "Uncategorized" to filter scenarios with none of Confidentiality, Integrity or Availability assigned. */ + ciaCategoryMatchesAny?: ListRiskScenarioRequestCiaCategoryMatchesAnyList; + /** Use "No treatment type" to filter scenarios without treatment specified. */ + treatmentTypeMatchesAny?: ListRiskScenarioRequestTreatmentTypeMatchesAnyList; + inherentScoreGroupMatchesAny?: ListRiskScenarioRequestInherentScoreGroupMatchesAnyList; + residualScoreGroupMatchesAny?: ListRiskScenarioRequestResidualScoreGroupMatchesAnyList; + reviewStatusMatchesAny?: ListRiskScenarioRequestReviewStatusMatchesAnyList; + /** Filter by risk scenario type. Defaults to "Risk Scenario". Only returns enterprise risks when explicitly set to "Enterprise Risk". */ + type?: RiskScenarioType | (string & {}); + /** Default to order by description alphabetically. */ + orderBy?: ListRiskScenarioRequestOrderBy | (string & {}); +} +export const ListRiskScenarioRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + includeIgnored: S.optional(S.Boolean.pipe(T.Query())), + ownerMatchesAny: S.optional( + ListRiskScenarioRequestOwnerMatchesAnyList.pipe(T.Query()), + ), + searchString: S.optional(S.String.pipe(T.Query())), + categoryMatchesAny: S.optional( + ListRiskScenarioRequestCategoryMatchesAnyList.pipe(T.Query()), + ), + ciaCategoryMatchesAny: S.optional( + ListRiskScenarioRequestCiaCategoryMatchesAnyList.pipe(T.Query()), + ), + treatmentTypeMatchesAny: S.optional( + ListRiskScenarioRequestTreatmentTypeMatchesAnyList.pipe(T.Query()), + ), + inherentScoreGroupMatchesAny: S.optional( + ListRiskScenarioRequestInherentScoreGroupMatchesAnyList.pipe(T.Query()), + ), + residualScoreGroupMatchesAny: S.optional( + ListRiskScenarioRequestResidualScoreGroupMatchesAnyList.pipe(T.Query()), + ), + reviewStatusMatchesAny: S.optional( + ListRiskScenarioRequestReviewStatusMatchesAnyList.pipe(T.Query()), + ), + type: S.optional(RiskScenarioType.pipe(T.Query())), + orderBy: S.optional(ListRiskScenarioRequestOrderBy.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/risk-scenarios", code: 200 })), +).annotate({ + identifier: "ListRiskScenarioRequest", +}) as any as S.Schema; + +export type PaginatedResponseRiskScenarioResultsDataList = Array; +export const PaginatedResponseRiskScenarioResultsDataList = + /*@__PURE__*/ S.Array( + RiskScenario, + ) as any as S.Schema; + +export interface PaginatedResponseRiskScenarioResults { + data: PaginatedResponseRiskScenarioResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseRiskScenarioResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseRiskScenarioResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseRiskScenarioResults", +}) as any as S.Schema; + +export interface PaginatedResponseRiskScenario { + results: PaginatedResponseRiskScenarioResults; +} +export const PaginatedResponseRiskScenario = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseRiskScenarioResults, + }), +).annotate({ + identifier: "PaginatedResponseRiskScenario", +}) as any as S.Schema; + +export interface ListRiskScenarioControlsRequest { + riskScenarioId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListRiskScenarioControlsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + riskScenarioId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/risk-scenarios/{riskScenarioId}/controls", + code: 200, + }), + ), +).annotate({ + identifier: "ListRiskScenarioControlsRequest", +}) as any as S.Schema; + +export type PaginatedResponseRiskScenarioControlResultsDataList = + Array; +export const PaginatedResponseRiskScenarioControlResultsDataList = + /*@__PURE__*/ S.Array( + RiskScenarioControl, + ) as any as S.Schema; + +export interface PaginatedResponseRiskScenarioControlResults { + data: PaginatedResponseRiskScenarioControlResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseRiskScenarioControlResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseRiskScenarioControlResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseRiskScenarioControlResults", + }) as any as S.Schema; + +export interface PaginatedResponseRiskScenarioControl { + results: PaginatedResponseRiskScenarioControlResults; +} +export const PaginatedResponseRiskScenarioControl = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: PaginatedResponseRiskScenarioControlResults, + }), +).annotate({ + identifier: "PaginatedResponseRiskScenarioControl", +}) as any as S.Schema; + +export type CustomerTrustProductContextIdFilter = + | "EXTERNAL_TRUST_CENTER" + | "DOCUMENT_SHARING" + | "CONTROL_SHARING" + | "QUESTIONNAIRE"; +export const CustomerTrustProductContextIdFilter = /*@__PURE__*/ S.String; + +export type ListTagCategoriesRequestProductContextIdsMatchesAnyList = Array< + CustomerTrustProductContextIdFilter | (string & {}) +>; +export const ListTagCategoriesRequestProductContextIdsMatchesAnyList = + /*@__PURE__*/ S.Array( + CustomerTrustProductContextIdFilter, + ) as any as S.Schema; + +export interface ListTagCategoriesRequest { + productContextIdsMatchesAny?: ListTagCategoriesRequestProductContextIdsMatchesAnyList; +} +export const ListTagCategoriesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + productContextIdsMatchesAny: S.optional( + ListTagCategoriesRequestProductContextIdsMatchesAnyList.pipe(T.Query()), + ), + }).pipe( + T.Http({ method: "GET", uri: "/customer-trust/tag-categories", code: 200 }), + ), +).annotate({ + identifier: "ListTagCategoriesRequest", +}) as any as S.Schema; + +export type ArrayResponseUserDefinedTagCategoryResultsList = + Array; +export const ArrayResponseUserDefinedTagCategoryResultsList = + /*@__PURE__*/ S.Array( + UserDefinedTagCategory, + ) as any as S.Schema; + +export interface ArrayResponseUserDefinedTagCategory { + results: ArrayResponseUserDefinedTagCategoryResultsList; +} +export const ArrayResponseUserDefinedTagCategory = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: ArrayResponseUserDefinedTagCategoryResultsList, + }), +).annotate({ + identifier: "ArrayResponseUserDefinedTagCategory", +}) as any as S.Schema; + +/** Categories for tests. */ +export type TestCategory = + | "ACCOUNTS_ACCESS" + | "ACCOUNT_SECURITY" + | "ACCOUNT_SETUP" + | "COMPUTERS" + | "CUSTOM" + | "DATA_STORAGE" + | "EMPLOYEES" + | "INFRASTRUCTURE" + | "IT" + | "LOGGING" + | "MONITORING_ALERTS" + | "PEOPLE" + | "POLICIES" + | "RISK_ANALYSIS" + | "SECURITY_ALERT_MANAGEMENT" + | "SOFTWARE_DEVELOPMENT" + | "VENDORS" + | "VULNERABILITY_MANAGEMENT"; +export const TestCategory = /*@__PURE__*/ S.String; + +export interface ListTestsRequest { + pageSize?: number; + pageCursor?: string; + /** Filter tests by test status. Possible values: OK (Test passed), DEACTIVATED (Test is deactivated), NEEDS_ATTENTION (Test failed), IN_PROGRESS (Test is in progress), INVALID (Test is invalid), NOT_APPLICABLE (Test is not applicable) */ + statusFilter?: TestStatus | (string & {}); + /** Filter tests by framework. */ + frameworkFilter?: string; + /** Filter tests by integration. */ + integrationFilter?: string; + /** Filter tests by control ID. */ + controlFilter?: string; + /** Filter tests by owner ID. */ + ownerFilter?: string; + /** Filter tests by category. */ + categoryFilter?: TestCategory | (string & {}); + /** Filter tests by rollout status. A test in rollout is an upcoming test that does not have its history tracked yet. */ + isInRollout?: boolean; +} +export const ListTestsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + statusFilter: S.optional(TestStatus.pipe(T.Query())), + frameworkFilter: S.optional(S.String.pipe(T.Query())), + integrationFilter: S.optional(S.String.pipe(T.Query())), + controlFilter: S.optional(S.String.pipe(T.Query())), + ownerFilter: S.optional(S.String.pipe(T.Query())), + categoryFilter: S.optional(TestCategory.pipe(T.Query())), + isInRollout: S.optional(S.Boolean.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/tests", code: 200 })), +).annotate({ + identifier: "ListTestsRequest", +}) as any as S.Schema; + +export type PaginatedResponseTestResultsDataList = Array; +export const PaginatedResponseTestResultsDataList = /*@__PURE__*/ S.Array( + Test, +) as any as S.Schema; + +export interface PaginatedResponseTestResults { + data: PaginatedResponseTestResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTestResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTestResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseTestResults", +}) as any as S.Schema; + +export interface PaginatedResponseTest { + results: PaginatedResponseTestResults; +} +export const PaginatedResponseTest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTestResults, + }), +).annotate({ + identifier: "PaginatedResponseTest", +}) as any as S.Schema; + +export interface ListTestsForControlRequest { + controlId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListTestsForControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/controls/{controlId}/tests", code: 200 }), + ), +).annotate({ + identifier: "ListTestsForControlRequest", +}) as any as S.Schema; + +export interface ListTrustCenterAccessRequestsRequest { + slugId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListTrustCenterAccessRequestsRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/access-requests", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterAccessRequestsRequest", +}) as any as S.Schema; + +export type PaginatedResponseTrustCenterAccessRequestResultsDataList = + Array; +export const PaginatedResponseTrustCenterAccessRequestResultsDataList = + /*@__PURE__*/ S.Array( + TrustCenterAccessRequest, + ) as any as S.Schema; + +export interface PaginatedResponseTrustCenterAccessRequestResults { + data: PaginatedResponseTrustCenterAccessRequestResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTrustCenterAccessRequestResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTrustCenterAccessRequestResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterAccessRequestResults", + }) as any as S.Schema; + +export interface PaginatedResponseTrustCenterAccessRequest { + results: PaginatedResponseTrustCenterAccessRequestResults; +} +export const PaginatedResponseTrustCenterAccessRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTrustCenterAccessRequestResults, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterAccessRequest", + }) as any as S.Schema; + +export type ActivityEventType = + | "PAGE_VIEW" + | "RESOURCE_DOWNLOAD" + | "RESOURCE_VIEW" + | "VIDEO_PLAY"; +export const ActivityEventType = /*@__PURE__*/ S.String; + +export type ListTrustCenterActivityEventsRequestEventTypesMatchesAnyList = + Array; +export const ListTrustCenterActivityEventsRequestEventTypesMatchesAnyList = + /*@__PURE__*/ S.Array( + ActivityEventType, + ) as any as S.Schema; + +export interface ListTrustCenterActivityEventsRequest { + slugId: string; + pageSize?: number; + pageCursor?: string; + eventTypesMatchesAny?: ListTrustCenterActivityEventsRequestEventTypesMatchesAnyList; + /** Only include activity events that occurred on or after the specified date and time. */ + afterDate?: string; + /** Only include activity events that occurred before the specified date and time. */ + beforeDate?: string; +} +export const ListTrustCenterActivityEventsRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + eventTypesMatchesAny: S.optional( + ListTrustCenterActivityEventsRequestEventTypesMatchesAnyList.pipe( + T.Query(), + ), + ), + afterDate: S.optional(S.String.pipe(T.Query())), + beforeDate: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/activity", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterActivityEventsRequest", +}) as any as S.Schema; + +export type TrustCenterPage = + | "COMPLIANCE" + | "CONTROLS" + | "FAQ" + | "MEDIA" + | "OVERVIEW" + | "RESOURCES" + | "SUBPROCESSORS" + | "UPDATES"; +export const TrustCenterPage = /*@__PURE__*/ S.String; + +export interface TrustCenterActivityEventDetailsCase0 { + /** Page that was viewed. */ + page: TrustCenterPage; +} +export const TrustCenterActivityEventDetailsCase0 = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + page: TrustCenterPage, + }), +).annotate({ + identifier: "TrustCenterActivityEventDetailsCase0", +}) as any as S.Schema; + +export interface TrustCenterActivityEventDetailsCase1 { + /** Title of the resource that this event pertains to. */ + resourceName: string; + /** ID of the resource that this event pertains to. */ + resourceId: string; +} +export const TrustCenterActivityEventDetailsCase1 = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + resourceName: S.String, + resourceId: S.String, + }), +).annotate({ + identifier: "TrustCenterActivityEventDetailsCase1", +}) as any as S.Schema; + +export interface TrustCenterActivityEventDetailsCase2 { + /** Title of the video that was played. */ + videoTitle: string; +} +export const TrustCenterActivityEventDetailsCase2 = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + videoTitle: S.String, + }), +).annotate({ + identifier: "TrustCenterActivityEventDetailsCase2", +}) as any as S.Schema; + +/** Additional details about the event. Details vary based on event type. */ +export type TrustCenterActivityEventDetails = + | TrustCenterActivityEventDetailsCase0 + | TrustCenterActivityEventDetailsCase1 + | TrustCenterActivityEventDetailsCase2; +export const TrustCenterActivityEventDetails = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +export interface TrustCenterActivityEvent { + /** Unique identifier for the activity event. */ + id: string; + /** Date and time the event occurred. */ + date: string; + /** The type of activity event this is. */ + eventType: ActivityEventType; + /** Additional details about the event. Details vary based on event type. */ + details: TrustCenterActivityEventDetails | null; + /** ID of the viewer who produced the event. */ + viewerId: string | null; + /** Email of the viewer who produced the event. */ + viewerEmail: string | null; + /** City from which the request originated. */ + city: string | null; + /** Country code from which the request originated. */ + countryCode: string | null; +} +export const TrustCenterActivityEvent = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + date: S.String, + eventType: ActivityEventType, + details: S.NullOr(TrustCenterActivityEventDetails), + viewerId: S.NullOr(S.String), + viewerEmail: S.NullOr(S.String), + city: S.NullOr(S.String), + countryCode: S.NullOr(S.String), + }), +).annotate({ + identifier: "TrustCenterActivityEvent", +}) as any as S.Schema; + +export type PaginatedResponseTrustCenterActivityEventResultsDataList = + Array; +export const PaginatedResponseTrustCenterActivityEventResultsDataList = + /*@__PURE__*/ S.Array( + TrustCenterActivityEvent, + ) as any as S.Schema; + +export interface PaginatedResponseTrustCenterActivityEventResults { + data: PaginatedResponseTrustCenterActivityEventResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTrustCenterActivityEventResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTrustCenterActivityEventResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterActivityEventResults", + }) as any as S.Schema; + +export interface PaginatedResponseTrustCenterActivityEvent { + results: PaginatedResponseTrustCenterActivityEventResults; +} +export const PaginatedResponseTrustCenterActivityEvent = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTrustCenterActivityEventResults, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterActivityEvent", + }) as any as S.Schema; + +export interface ListTrustCenterControlsRequest { + slugId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListTrustCenterControlsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/controls", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterControlsRequest", +}) as any as S.Schema; + +export type PaginatedResponseTrustCenterControlResultsDataList = + Array; +export const PaginatedResponseTrustCenterControlResultsDataList = + /*@__PURE__*/ S.Array( + TrustCenterControl, + ) as any as S.Schema; + +export interface PaginatedResponseTrustCenterControlResults { + data: PaginatedResponseTrustCenterControlResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTrustCenterControlResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTrustCenterControlResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterControlResults", + }) as any as S.Schema; + +export interface PaginatedResponseTrustCenterControl { + results: PaginatedResponseTrustCenterControlResults; +} +export const PaginatedResponseTrustCenterControl = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTrustCenterControlResults, + }), +).annotate({ + identifier: "PaginatedResponseTrustCenterControl", +}) as any as S.Schema; + +export interface ListTrustCenterDataCollectedRequest { + slugId: string; +} +export const ListTrustCenterDataCollectedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/data-collected", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterDataCollectedRequest", +}) as any as S.Schema; + +/** Enum representing if and how the data collected is shown on the trust center */ +export type DataCollectedStatus = "COLLECTED" | "HIDDEN" | "NOT_COLLECTED"; +export const DataCollectedStatus = /*@__PURE__*/ S.String; + +export interface TrustCenterDataCollected { + /** Name of the data type being disclosed. */ + dataCollected: string; + /** Status of the data collection disclosure. */ + status: DataCollectedStatus; +} +export const TrustCenterDataCollected = /*@__PURE__*/ S.suspend(() => + S.Struct({ + dataCollected: S.String, + status: DataCollectedStatus, + }), +).annotate({ + identifier: "TrustCenterDataCollected", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterDataCollectedResultsList = + Array; +export const ArrayResponseTrustCenterDataCollectedResultsList = + /*@__PURE__*/ S.Array( + TrustCenterDataCollected, + ) as any as S.Schema; + +export interface ArrayResponseTrustCenterDataCollected { + results: ArrayResponseTrustCenterDataCollectedResultsList; +} +export const ArrayResponseTrustCenterDataCollected = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: ArrayResponseTrustCenterDataCollectedResultsList, + }), +).annotate({ + identifier: "ArrayResponseTrustCenterDataCollected", +}) as any as S.Schema; + +export interface ListTrustCenterFaqCategoriesRequest { + slugId: string; +} +export const ListTrustCenterFaqCategoriesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/faq-categories", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterFaqCategoriesRequest", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterFaqCategoryResultsList = + Array; +export const ArrayResponseTrustCenterFaqCategoryResultsList = + /*@__PURE__*/ S.Array( + TrustCenterFaqCategory, + ) as any as S.Schema; + +export interface ArrayResponseTrustCenterFaqCategory { + results: ArrayResponseTrustCenterFaqCategoryResultsList; +} +export const ArrayResponseTrustCenterFaqCategory = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: ArrayResponseTrustCenterFaqCategoryResultsList, + }), +).annotate({ + identifier: "ArrayResponseTrustCenterFaqCategory", +}) as any as S.Schema; + +export interface ListTrustCenterFaqsRequest { + slugId: string; +} +export const ListTrustCenterFaqsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ method: "GET", uri: "/trust-centers/{slugId}/faqs", code: 200 }), + ), +).annotate({ + identifier: "ListTrustCenterFaqsRequest", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterFaqResultsList = Array; +export const ArrayResponseTrustCenterFaqResultsList = /*@__PURE__*/ S.Array( + TrustCenterFaq, +) as any as S.Schema; + +export interface ArrayResponseTrustCenterFaq { + results: ArrayResponseTrustCenterFaqResultsList; +} +export const ArrayResponseTrustCenterFaq = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: ArrayResponseTrustCenterFaqResultsList, + }), +).annotate({ + identifier: "ArrayResponseTrustCenterFaq", +}) as any as S.Schema; + +export interface ListTrustCenterHistoricalAccessRequestsRequest { + slugId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListTrustCenterHistoricalAccessRequestsRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/historical-access-requests", + code: 200, + }), + ), + ).annotate({ + identifier: "ListTrustCenterHistoricalAccessRequestsRequest", + }) as any as S.Schema; + +/** IDs for the resources that the viewer requested access to. */ +export type TrustCenterAccessRequestHistoricalRequestedResourcesList = + Array; +export const TrustCenterAccessRequestHistoricalRequestedResourcesList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** Enum representing the outcome states of a historical trust center access request */ +export type HistoricalAccessRequestOutcome = "APPROVED" | "DENIED"; +export const HistoricalAccessRequestOutcome = /*@__PURE__*/ S.String; + +export interface TrustCenterAccessRequestHistorical { + /** Unique identifier for the access request. */ + id: string; + /** Email of the requester. */ + email: string; + /** Name of the requester. */ + name: string; + /** Name of the requester's company. */ + companyName: string; + /** Reason for the access request. */ + reason: string; + /** IDs for the resources that the viewer requested access to. */ + requestedResources: TrustCenterAccessRequestHistoricalRequestedResourcesList | null; + /** Access level that the viewer requested. */ + accessLevel: ViewerAccessLevel; + /** Date the access request was created. */ + creationDate: string; + /** Date the access request was last updated. */ + updatedDate: string; + /** Outcome of the access request. APPROVED or DENIED. */ + outcome: HistoricalAccessRequestOutcome; + /** Reason provided when the access request was denied. Null if not denied or no reason was given. */ + manualDenialReason: string | null; +} +export const TrustCenterAccessRequestHistorical = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + email: S.String, + name: S.String, + companyName: S.String, + reason: S.String, + requestedResources: S.NullOr( + TrustCenterAccessRequestHistoricalRequestedResourcesList, + ), + accessLevel: ViewerAccessLevel, + creationDate: S.String, + updatedDate: S.String, + outcome: HistoricalAccessRequestOutcome, + manualDenialReason: S.NullOr(S.String), + }), +).annotate({ + identifier: "TrustCenterAccessRequestHistorical", +}) as any as S.Schema; + +export type PaginatedResponseTrustCenterAccessRequestHistoricalResultsDataList = + Array; +export const PaginatedResponseTrustCenterAccessRequestHistoricalResultsDataList = + /*@__PURE__*/ S.Array( + TrustCenterAccessRequestHistorical, + ) as any as S.Schema; + +export interface PaginatedResponseTrustCenterAccessRequestHistoricalResults { + data: PaginatedResponseTrustCenterAccessRequestHistoricalResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTrustCenterAccessRequestHistoricalResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTrustCenterAccessRequestHistoricalResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterAccessRequestHistoricalResults", + }) as any as S.Schema; + +export interface PaginatedResponseTrustCenterAccessRequestHistorical { + results: PaginatedResponseTrustCenterAccessRequestHistoricalResults; +} +export const PaginatedResponseTrustCenterAccessRequestHistorical = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTrustCenterAccessRequestHistoricalResults, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterAccessRequestHistorical", + }) as any as S.Schema; + +export interface ListTrustCenterResourceCategoriesRequest { + slugId: string; +} +export const ListTrustCenterResourceCategoriesRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/resource-categories", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterResourceCategoriesRequest", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterResourceCategoryResultsList = + Array; +export const ArrayResponseTrustCenterResourceCategoryResultsList = + /*@__PURE__*/ S.Array( + TrustCenterResourceCategory, + ) as any as S.Schema; + +export interface ArrayResponseTrustCenterResourceCategory { + results: ArrayResponseTrustCenterResourceCategoryResultsList; +} +export const ArrayResponseTrustCenterResourceCategory = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: ArrayResponseTrustCenterResourceCategoryResultsList, + }), +).annotate({ + identifier: "ArrayResponseTrustCenterResourceCategory", +}) as any as S.Schema; + +export interface ListTrustCenterResourcesRequest { + slugId: string; +} +export const ListTrustCenterResourcesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/resources", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterResourcesRequest", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterResourceResultsList = + Array; +export const ArrayResponseTrustCenterResourceResultsList = + /*@__PURE__*/ S.Array( + TrustCenterResource, + ) as any as S.Schema; + +export interface ArrayResponseTrustCenterResource { + results: ArrayResponseTrustCenterResourceResultsList; +} +export const ArrayResponseTrustCenterResource = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: ArrayResponseTrustCenterResourceResultsList, + }), +).annotate({ + identifier: "ArrayResponseTrustCenterResource", +}) as any as S.Schema; + +export interface ListTrustCenterSubprocessorsRequest { + slugId: string; +} +export const ListTrustCenterSubprocessorsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/subprocessors", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterSubprocessorsRequest", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterSubprocessorResultsList = + Array; +export const ArrayResponseTrustCenterSubprocessorResultsList = + /*@__PURE__*/ S.Array( + TrustCenterSubprocessor, + ) as any as S.Schema; + +export interface ArrayResponseTrustCenterSubprocessor { + results: ArrayResponseTrustCenterSubprocessorResultsList; +} +export const ArrayResponseTrustCenterSubprocessor = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: ArrayResponseTrustCenterSubprocessorResultsList, + }), +).annotate({ + identifier: "ArrayResponseTrustCenterSubprocessor", +}) as any as S.Schema; + +export interface ListTrustCenterSubscriberGroupsRequest { + slugId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListTrustCenterSubscriberGroupsRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/subscriber-groups", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterSubscriberGroupsRequest", +}) as any as S.Schema; + +export type PaginatedResponseTrustCenterSubscriberGroupResultsDataList = + Array; +export const PaginatedResponseTrustCenterSubscriberGroupResultsDataList = + /*@__PURE__*/ S.Array( + TrustCenterSubscriberGroup, + ) as any as S.Schema; + +export interface PaginatedResponseTrustCenterSubscriberGroupResults { + data: PaginatedResponseTrustCenterSubscriberGroupResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTrustCenterSubscriberGroupResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTrustCenterSubscriberGroupResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterSubscriberGroupResults", + }) as any as S.Schema; + +export interface PaginatedResponseTrustCenterSubscriberGroup { + results: PaginatedResponseTrustCenterSubscriberGroupResults; +} +export const PaginatedResponseTrustCenterSubscriberGroup = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTrustCenterSubscriberGroupResults, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterSubscriberGroup", + }) as any as S.Schema; + +export interface ListTrustCenterSubscribersRequest { + slugId: string; + pageSize?: number; + pageCursor?: string; + customerTrustAccountId?: string; +} +export const ListTrustCenterSubscribersRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + customerTrustAccountId: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/subscribers", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterSubscribersRequest", +}) as any as S.Schema; + +export type PaginatedResponseTrustCenterSubscriberResultsDataList = + Array; +export const PaginatedResponseTrustCenterSubscriberResultsDataList = + /*@__PURE__*/ S.Array( + TrustCenterSubscriber, + ) as any as S.Schema; + +export interface PaginatedResponseTrustCenterSubscriberResults { + data: PaginatedResponseTrustCenterSubscriberResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTrustCenterSubscriberResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTrustCenterSubscriberResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterSubscriberResults", + }) as any as S.Schema; + +export interface PaginatedResponseTrustCenterSubscriber { + results: PaginatedResponseTrustCenterSubscriberResults; +} +export const PaginatedResponseTrustCenterSubscriber = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: PaginatedResponseTrustCenterSubscriberResults, + }), +).annotate({ + identifier: "PaginatedResponseTrustCenterSubscriber", +}) as any as S.Schema; + +export interface ListTrustCenterUpdatesRequest { + slugId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListTrustCenterUpdatesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/updates", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterUpdatesRequest", +}) as any as S.Schema; + +export type PaginatedResponseTrustCenterUpdateAPIResponseResultsDataList = + Array; +export const PaginatedResponseTrustCenterUpdateAPIResponseResultsDataList = + /*@__PURE__*/ S.Array( + TrustCenterUpdateAPIResponse, + ) as any as S.Schema; + +export interface PaginatedResponseTrustCenterUpdateAPIResponseResults { + data: PaginatedResponseTrustCenterUpdateAPIResponseResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTrustCenterUpdateAPIResponseResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTrustCenterUpdateAPIResponseResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterUpdateAPIResponseResults", + }) as any as S.Schema; + +export interface PaginatedResponseTrustCenterUpdateAPIResponse { + results: PaginatedResponseTrustCenterUpdateAPIResponseResults; +} +export const PaginatedResponseTrustCenterUpdateAPIResponse = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTrustCenterUpdateAPIResponseResults, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterUpdateAPIResponse", + }) as any as S.Schema; + +export interface ListTrustCenterViewersRequest { + slugId: string; + pageSize?: number; + pageCursor?: string; + includeRemoved?: boolean; +} +export const ListTrustCenterViewersRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + includeRemoved: S.optional(S.Boolean.pipe(T.Query())), + }).pipe( + T.Http({ + method: "GET", + uri: "/trust-centers/{slugId}/viewers", + code: 200, + }), + ), +).annotate({ + identifier: "ListTrustCenterViewersRequest", +}) as any as S.Schema; + +export type PaginatedResponseTrustCenterViewerResultsDataList = + Array; +export const PaginatedResponseTrustCenterViewerResultsDataList = + /*@__PURE__*/ S.Array( + TrustCenterViewer, + ) as any as S.Schema; + +export interface PaginatedResponseTrustCenterViewerResults { + data: PaginatedResponseTrustCenterViewerResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseTrustCenterViewerResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseTrustCenterViewerResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseTrustCenterViewerResults", + }) as any as S.Schema; + +export interface PaginatedResponseTrustCenterViewer { + results: PaginatedResponseTrustCenterViewerResults; +} +export const PaginatedResponseTrustCenterViewer = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseTrustCenterViewerResults, + }), +).annotate({ + identifier: "PaginatedResponseTrustCenterViewer", +}) as any as S.Schema; + +export interface ListUsersRequest { + pageSize?: number; + pageCursor?: string; +} +export const ListUsersRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/users", code: 200 })), +).annotate({ + identifier: "ListUsersRequest", +}) as any as S.Schema; + +export type PaginatedResponseUserResultsDataList = Array; +export const PaginatedResponseUserResultsDataList = /*@__PURE__*/ S.Array( + User, +) as any as S.Schema; + +export interface PaginatedResponseUserResults { + data: PaginatedResponseUserResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseUserResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseUserResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseUserResults", +}) as any as S.Schema; + +export interface PaginatedResponseUser { + results: PaginatedResponseUserResults; +} +export const PaginatedResponseUser = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseUserResults, + }), +).annotate({ + identifier: "PaginatedResponseUser", +}) as any as S.Schema; + +export interface ListVendorAssessmentTypesRequest { + pageSize?: number; + pageCursor?: string; + /** Filter assessment types to a single lifecycle status */ + status?: VendorAssessmentTypeLifecycleStatus | (string & {}); +} +export const ListVendorAssessmentTypesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + status: S.optional(VendorAssessmentTypeLifecycleStatus.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/vendor-assessment-types", code: 200 }), + ), +).annotate({ + identifier: "ListVendorAssessmentTypesRequest", +}) as any as S.Schema; + +export type PaginatedResponseVendorAssessmentTypeResultsDataList = + Array; +export const PaginatedResponseVendorAssessmentTypeResultsDataList = + /*@__PURE__*/ S.Array( + VendorAssessmentType, + ) as any as S.Schema; + +export interface PaginatedResponseVendorAssessmentTypeResults { + data: PaginatedResponseVendorAssessmentTypeResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseVendorAssessmentTypeResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseVendorAssessmentTypeResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseVendorAssessmentTypeResults", + }) as any as S.Schema; + +export interface PaginatedResponseVendorAssessmentType { + results: PaginatedResponseVendorAssessmentTypeResults; +} +export const PaginatedResponseVendorAssessmentType = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: PaginatedResponseVendorAssessmentTypeResults, + }), +).annotate({ + identifier: "PaginatedResponseVendorAssessmentType", +}) as any as S.Schema; + +export interface ListVendorDocumentsRequest { + vendorId: string; + pageSize?: number; + pageCursor?: string; +} +export const ListVendorDocumentsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/vendors/{vendorId}/documents", code: 200 }), + ), +).annotate({ + identifier: "ListVendorDocumentsRequest", +}) as any as S.Schema; + +export interface ListVendorFindingsRequest { + vendorId: string; + pageSize?: number; + pageCursor?: string; + /** Filter findings by security review ID */ + securityReviewId?: string; + /** Filter findings by document ID */ + documentId?: string; +} +export const ListVendorFindingsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + securityReviewId: S.optional(S.String.pipe(T.Query())), + documentId: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/vendors/{vendorId}/findings", code: 200 }), + ), +).annotate({ + identifier: "ListVendorFindingsRequest", +}) as any as S.Schema; + +export type PaginatedResponseVendorFindingResultsDataList = + Array; +export const PaginatedResponseVendorFindingResultsDataList = + /*@__PURE__*/ S.Array( + VendorFinding, + ) as any as S.Schema; + +export interface PaginatedResponseVendorFindingResults { + data: PaginatedResponseVendorFindingResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseVendorFindingResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseVendorFindingResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseVendorFindingResults", +}) as any as S.Schema; + +export interface PaginatedResponseVendorFinding { + results: PaginatedResponseVendorFindingResults; +} +export const PaginatedResponseVendorFinding = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseVendorFindingResults, + }), +).annotate({ + identifier: "PaginatedResponseVendorFinding", +}) as any as S.Schema; + +export interface ListVendorRiskAttributesRequest { + pageSize?: number; + pageCursor?: string; +} +export const ListVendorRiskAttributesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/vendor-risk-attributes", code: 200 })), +).annotate({ + identifier: "ListVendorRiskAttributesRequest", +}) as any as S.Schema; + +/** Vendor categories this risk attribute applies to. */ +export type VendorRiskAttributeVendorCategoriesList = Array; +export const VendorRiskAttributeVendorCategoriesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +export interface VendorRiskAttribute { + /** Unique identifier for the risk attribute. */ + id: string; + /** Display name of the risk attribute. */ + name: string; + /** Description of the risk attribute. */ + description: string; + /** Vendor categories this risk attribute applies to. */ + vendorCategories: VendorRiskAttributeVendorCategoriesList; + /** Whether or not this risk attribute is enabled. */ + enabled: boolean; + /** Risk level of this attribute. */ + riskLevel: VendorRiskLevel; +} +export const VendorRiskAttribute = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + name: S.String, + description: S.String, + vendorCategories: VendorRiskAttributeVendorCategoriesList, + enabled: S.Boolean, + riskLevel: VendorRiskLevel, + }), +).annotate({ + identifier: "VendorRiskAttribute", +}) as any as S.Schema; + +export type PaginatedResponseVendorRiskAttributeResultsDataList = + Array; +export const PaginatedResponseVendorRiskAttributeResultsDataList = + /*@__PURE__*/ S.Array( + VendorRiskAttribute, + ) as any as S.Schema; + +export interface PaginatedResponseVendorRiskAttributeResults { + data: PaginatedResponseVendorRiskAttributeResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseVendorRiskAttributeResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseVendorRiskAttributeResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseVendorRiskAttributeResults", + }) as any as S.Schema; + +export interface PaginatedResponseVendorRiskAttribute { + results: PaginatedResponseVendorRiskAttributeResults; +} +export const PaginatedResponseVendorRiskAttribute = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + results: PaginatedResponseVendorRiskAttributeResults, + }), +).annotate({ + identifier: "PaginatedResponseVendorRiskAttribute", +}) as any as S.Schema; + +export type ListVendorsRequestStatusMatchesAnyList = Array< + VendorStatus | (string & {}) +>; +export const ListVendorsRequestStatusMatchesAnyList = /*@__PURE__*/ S.Array( + VendorStatus, +) as any as S.Schema; + +export interface ListVendorsRequest { + pageSize?: number; + pageCursor?: string; + /** Filter vendors by name (case-insensitive, partial match) */ + name?: string; + /** Filter vendors by status (can specify multiple) */ + statusMatchesAny?: ListVendorsRequestStatusMatchesAnyList; +} +export const ListVendorsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + name: S.optional(S.String.pipe(T.Query())), + statusMatchesAny: S.optional( + ListVendorsRequestStatusMatchesAnyList.pipe(T.Query()), + ), + }).pipe(T.Http({ method: "GET", uri: "/vendors", code: 200 })), +).annotate({ + identifier: "ListVendorsRequest", +}) as any as S.Schema; + +export type PaginatedResponseVendorResultsDataList = Array; +export const PaginatedResponseVendorResultsDataList = /*@__PURE__*/ S.Array( + Vendor, +) as any as S.Schema; + +export interface PaginatedResponseVendorResults { + data: PaginatedResponseVendorResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseVendorResults = /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseVendorResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseVendorResults", +}) as any as S.Schema; + +export interface PaginatedResponseVendor { + results: PaginatedResponseVendorResults; +} +export const PaginatedResponseVendor = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseVendorResults, + }), +).annotate({ + identifier: "PaginatedResponseVendor", +}) as any as S.Schema; + +/** ExternalFindingSeverity describes the severity of an external finding (Vulnerability or Security Alert) */ +export type ExternalFindingSeverity = "CRITICAL" | "HIGH" | "LOW" | "MEDIUM"; +export const ExternalFindingSeverity = /*@__PURE__*/ S.String; + +export interface ListVulnerabilitiesRequest { + pageSize?: number; + pageCursor?: string; + /** Filter vulnerabilities by deactivation status. */ + isDeactivated?: boolean; + /** Filter vulnerabilities based on a specific external ID. */ + externalVulnerabilityId?: string; + /** Filter vulnerabilities that have an available fix. */ + isFixAvailable?: boolean; + /** Filter vulnerabilities that are from a specific package. */ + packageIdentifier?: string; + /** Filter vulnerabilities with a fix due after a specific timestamp. */ + slaDeadlineAfterDate?: string; + /** Filter vulnerabilities with a fix due before a specific timestamp. */ + slaDeadlineBeforeDate?: string; + /** Filter vulnerabilities by severity. Possible values: CRITICAL, HIGH, MEDIUM, LOW. */ + severity?: ExternalFindingSeverity | (string & {}); + /** Filter vulnerabilities by the vulnerability scanner that detected them. */ + integrationId?: string; + /** Filter vulnerabilities without an SLA due date. */ + includeVulnerabilitiesWithoutSlas?: boolean; + /** Filter vulnerabilities by a specific asset ID. */ + vulnerableAssetId?: string; + /** Full-text filter on the vulnerability's name and description. */ + q?: string; +} +export const ListVulnerabilitiesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + isDeactivated: S.optional(S.Boolean.pipe(T.Query())), + externalVulnerabilityId: S.optional(S.String.pipe(T.Query())), + isFixAvailable: S.optional(S.Boolean.pipe(T.Query())), + packageIdentifier: S.optional(S.String.pipe(T.Query())), + slaDeadlineAfterDate: S.optional(S.String.pipe(T.Query())), + slaDeadlineBeforeDate: S.optional(S.String.pipe(T.Query())), + severity: S.optional(ExternalFindingSeverity.pipe(T.Query())), + integrationId: S.optional(S.String.pipe(T.Query())), + includeVulnerabilitiesWithoutSlas: S.optional(S.Boolean.pipe(T.Query())), + vulnerableAssetId: S.optional(S.String.pipe(T.Query())), + q: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/vulnerabilities", code: 200 })), +).annotate({ + identifier: "ListVulnerabilitiesRequest", +}) as any as S.Schema; + +export type PaginatedResponseVulnerabilityResultsDataList = + Array; +export const PaginatedResponseVulnerabilityResultsDataList = + /*@__PURE__*/ S.Array( + Vulnerability, + ) as any as S.Schema; + +export interface PaginatedResponseVulnerabilityResults { + data: PaginatedResponseVulnerabilityResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseVulnerabilityResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseVulnerabilityResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseVulnerabilityResults", +}) as any as S.Schema; + +export interface PaginatedResponseVulnerability { + results: PaginatedResponseVulnerabilityResults; +} +export const PaginatedResponseVulnerability = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseVulnerabilityResults, + }), +).annotate({ + identifier: "PaginatedResponseVulnerability", +}) as any as S.Schema; + +export interface ListVulnerabilityRemediationsRequest { + pageSize?: number; + pageCursor?: string; + /** Filter vulnerability remediations based on a specific scanner integration. */ + integrationId?: string; + /** Filter vulnerability remediations by severity. Possible values: CRITICAL, HIGH, MEDIUM, LOW. */ + severity?: ExternalFindingSeverity | (string & {}); + /** Filter vulnerability remediations by remediation status. */ + isRemediatedOnTime?: boolean; + /** Filter vulnerability remediations that occurred after a specific timestamp. */ + remediatedAfterDate?: string; + /** Filter vulnerability remediations that occurred before a specific timestamp. */ + remediatedBeforeDate?: string; +} +export const ListVulnerabilityRemediationsRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + integrationId: S.optional(S.String.pipe(T.Query())), + severity: S.optional(ExternalFindingSeverity.pipe(T.Query())), + isRemediatedOnTime: S.optional(S.Boolean.pipe(T.Query())), + remediatedAfterDate: S.optional(S.String.pipe(T.Query())), + remediatedBeforeDate: S.optional(S.String.pipe(T.Query())), + }).pipe( + T.Http({ method: "GET", uri: "/vulnerability-remediations", code: 200 }), + ), +).annotate({ + identifier: "ListVulnerabilityRemediationsRequest", +}) as any as S.Schema; + +export interface VulnerabilityRemediation { + /** Unique identifier for the remediation. */ + id: string; + /** Unique identifier for the vulnerability that the remediation is for. */ + vulnerabilityId: string; + /** Unique identifier for the vulnerable asset that the remediation is for. */ + vulnerableAssetId: string; + /** Severity of the vulnerability. */ + severity: string; + /** Date when the vulnerability was first detected. */ + detectedDate: string | null; + /** Date when the vulnerability should be remediated by. */ + slaDeadlineDate: string | null; + /** Date when the vulnerability was remediated. */ + remediationDate: string | null; +} +export const VulnerabilityRemediation = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + vulnerabilityId: S.String, + vulnerableAssetId: S.String, + severity: S.String, + detectedDate: S.NullOr(S.String), + slaDeadlineDate: S.NullOr(S.String), + remediationDate: S.NullOr(S.String), + }), +).annotate({ + identifier: "VulnerabilityRemediation", +}) as any as S.Schema; + +export type PaginatedResponseVulnerabilityRemediationResultsDataList = + Array; +export const PaginatedResponseVulnerabilityRemediationResultsDataList = + /*@__PURE__*/ S.Array( + VulnerabilityRemediation, + ) as any as S.Schema; + +export interface PaginatedResponseVulnerabilityRemediationResults { + data: PaginatedResponseVulnerabilityRemediationResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseVulnerabilityRemediationResults = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + data: PaginatedResponseVulnerabilityRemediationResultsDataList, + pageInfo: PageInfo, + }), + ).annotate({ + identifier: "PaginatedResponseVulnerabilityRemediationResults", + }) as any as S.Schema; + +export interface PaginatedResponseVulnerabilityRemediation { + results: PaginatedResponseVulnerabilityRemediationResults; +} +export const PaginatedResponseVulnerabilityRemediation = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseVulnerabilityRemediationResults, + }), + ).annotate({ + identifier: "PaginatedResponseVulnerabilityRemediation", + }) as any as S.Schema; + +export interface ListVulnerableAssetsRequest { + /** Filter vulnerable assets by search query. */ + q?: string; + pageSize?: number; + pageCursor?: string; + /** Filter vulnerable assets by specific vulnerability scanner. */ + integrationId?: string; + /** Filter vulnerable assets by asset type. Possible values: CODE_REPOSITORY, CONTAINER_REPOSITORY, CONTAINER_REPOSITORY_IMAGE, MANIFEST_FILE, SERVER, SERVERLESS_FUNCTION, WORKSTATION. */ + assetType?: VulnerableAssetType | (string & {}); + /** Filter vulnerable assets by... */ + assetExternalAccountId?: string; +} +export const ListVulnerableAssetsRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + q: S.optional(S.String.pipe(T.Query())), + pageSize: S.optional(S.Number.pipe(T.Query())), + pageCursor: S.optional(S.String.pipe(T.Query())), + integrationId: S.optional(S.String.pipe(T.Query())), + assetType: S.optional(VulnerableAssetType.pipe(T.Query())), + assetExternalAccountId: S.optional(S.String.pipe(T.Query())), + }).pipe(T.Http({ method: "GET", uri: "/vulnerable-assets", code: 200 })), +).annotate({ + identifier: "ListVulnerableAssetsRequest", +}) as any as S.Schema; + +export type PaginatedResponseVulnerableAssetResultsDataList = + Array; +export const PaginatedResponseVulnerableAssetResultsDataList = + /*@__PURE__*/ S.Array( + VulnerableAsset, + ) as any as S.Schema; + +export interface PaginatedResponseVulnerableAssetResults { + data: PaginatedResponseVulnerableAssetResultsDataList; + pageInfo: PageInfo; +} +export const PaginatedResponseVulnerableAssetResults = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + data: PaginatedResponseVulnerableAssetResultsDataList, + pageInfo: PageInfo, + }), +).annotate({ + identifier: "PaginatedResponseVulnerableAssetResults", +}) as any as S.Schema; + +export interface PaginatedResponseVulnerableAsset { + results: PaginatedResponseVulnerableAssetResults; +} +export const PaginatedResponseVulnerableAsset = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: PaginatedResponseVulnerableAssetResults, + }), +).annotate({ + identifier: "PaginatedResponseVulnerableAsset", +}) as any as S.Schema; + +export interface MarkAsNotPeopleRequestUpdatesItem { + /** Reason for making this change. */ + reason: string; + /** ID of the person to change */ + id: string; +} +export const MarkAsNotPeopleRequestUpdatesItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + reason: S.String, + id: S.String, + }), +).annotate({ + identifier: "MarkAsNotPeopleRequestUpdatesItem", +}) as any as S.Schema; + +/** List of account IDs to mark as not a person */ +export type MarkAsNotPeopleRequestUpdatesList = + Array; +export const MarkAsNotPeopleRequestUpdatesList = /*@__PURE__*/ S.Array( + MarkAsNotPeopleRequestUpdatesItem, +) as any as S.Schema; + +export interface MarkAsNotPeopleRequest { + /** List of account IDs to mark as not a person */ + updates: MarkAsNotPeopleRequestUpdatesList; +} +export const MarkAsNotPeopleRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + updates: MarkAsNotPeopleRequestUpdatesList, + }).pipe( + T.Http({ method: "POST", uri: "/people/mark-as-not-people", code: 200 }), + ), +).annotate({ + identifier: "MarkAsNotPeopleRequest", +}) as any as S.Schema; + +export interface MarkAsPeopleRequestUpdatesItem { + /** ID of the person to change */ + id: string; +} +export const MarkAsPeopleRequestUpdatesItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + }), +).annotate({ + identifier: "MarkAsPeopleRequestUpdatesItem", +}) as any as S.Schema; + +/** List of account IDs to mark as a person */ +export type MarkAsPeopleRequestUpdatesList = + Array; +export const MarkAsPeopleRequestUpdatesList = /*@__PURE__*/ S.Array( + MarkAsPeopleRequestUpdatesItem, +) as any as S.Schema; + +export interface MarkAsPeopleRequest { + /** List of account IDs to mark as a person */ + updates: MarkAsPeopleRequestUpdatesList; +} +export const MarkAsPeopleRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + updates: MarkAsPeopleRequestUpdatesList, + }).pipe(T.Http({ method: "POST", uri: "/people/mark-as-people", code: 200 })), +).annotate({ + identifier: "MarkAsPeopleRequest", +}) as any as S.Schema; + +export interface OffboardPeopleRequestUpdatesItem { + /** ID of the person who will be recorded as completing the offboarding for these people */ + acknowledgerId: string; + /** ID of the person to offboard */ + id: string; +} +export const OffboardPeopleRequestUpdatesItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + acknowledgerId: S.String, + id: S.String, + }), +).annotate({ + identifier: "OffboardPeopleRequestUpdatesItem", +}) as any as S.Schema; + +/** List of the people to offboard. */ +export type OffboardPeopleRequestUpdatesList = + Array; +export const OffboardPeopleRequestUpdatesList = /*@__PURE__*/ S.Array( + OffboardPeopleRequestUpdatesItem, +) as any as S.Schema; + +export interface OffboardPeopleRequest { + /** List of the people to offboard. */ + updates: OffboardPeopleRequestUpdatesList; +} +export const OffboardPeopleRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + updates: OffboardPeopleRequestUpdatesList, + }).pipe(T.Http({ method: "POST", uri: "/people/offboard", code: 200 })), +).annotate({ + identifier: "OffboardPeopleRequest", +}) as any as S.Schema; + +export interface ReactivateTestEntityRequest { + testId: string; + entityId: string; +} +export const ReactivateTestEntityRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + testId: S.String.pipe(T.Label()), + entityId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "POST", + uri: "/tests/{testId}/entities/{entityId}/reactivate", + code: 200, + }), + ), +).annotate({ + identifier: "ReactivateTestEntityRequest", +}) as any as S.Schema; + +export interface ReactivateTestEntityResponse {} +export const ReactivateTestEntityResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "ReactivateTestEntityResponse", +}) as any as S.Schema; + +export interface ReactivateVulnerabilitiesRequestUpdatesItem { + /** ID of the vulnerability to reactivate. */ + id: string; +} +export const ReactivateVulnerabilitiesRequestUpdatesItem = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + }), + ).annotate({ + identifier: "ReactivateVulnerabilitiesRequestUpdatesItem", + }) as any as S.Schema; + +/** List of vulnerability IDs to reactivate. */ +export type ReactivateVulnerabilitiesRequestUpdatesList = + Array; +export const ReactivateVulnerabilitiesRequestUpdatesList = + /*@__PURE__*/ S.Array( + ReactivateVulnerabilitiesRequestUpdatesItem, + ) as any as S.Schema; + +export interface ReactivateVulnerabilitiesRequest { + /** List of vulnerability IDs to reactivate. */ + updates: ReactivateVulnerabilitiesRequestUpdatesList; +} +export const ReactivateVulnerabilitiesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + updates: ReactivateVulnerabilitiesRequestUpdatesList, + }).pipe( + T.Http({ method: "POST", uri: "/vulnerabilities/reactivate", code: 200 }), + ), +).annotate({ + identifier: "ReactivateVulnerabilitiesRequest", +}) as any as S.Schema; + +export type RemovePeopleFromGroupRequestUpdatesItem = + AddPeopleToGroupRequestUpdatesItem; +export const RemovePeopleFromGroupRequestUpdatesItem = + AddPeopleToGroupRequestUpdatesItem; + +/** List of people IDs to remove from a group. */ +export type RemovePeopleFromGroupRequestUpdatesList = + Array; +export const RemovePeopleFromGroupRequestUpdatesList = /*@__PURE__*/ S.Array( + AddPeopleToGroupRequestUpdatesItem, +) as any as S.Schema; + +export interface RemovePeopleFromGroupRequest { + groupId: string; + /** List of people IDs to remove from a group. */ + updates: RemovePeopleFromGroupRequestUpdatesList; +} +export const RemovePeopleFromGroupRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + groupId: S.String.pipe(T.Label()), + updates: RemovePeopleFromGroupRequestUpdatesList, + }).pipe( + T.Http({ + method: "POST", + uri: "/groups/{groupId}/remove-people", + code: 200, + }), + ), +).annotate({ + identifier: "RemovePeopleFromGroupRequest", +}) as any as S.Schema; + +export interface RemovePersonFromGroupRequest { + groupId: string; + personId: string; +} +export const RemovePersonFromGroupRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + groupId: S.String.pipe(T.Label()), + personId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/groups/{groupId}/people/{personId}", + code: 200, + }), + ), +).annotate({ + identifier: "RemovePersonFromGroupRequest", +}) as any as S.Schema; + +export type RemoveTagCategoryProductContextRequestProductContextId = + | "EXTERNAL_TRUST_CENTER" + | "DOCUMENT_SHARING" + | "CONTROL_SHARING"; +export const RemoveTagCategoryProductContextRequestProductContextId = + /*@__PURE__*/ S.String; + +export interface RemoveTagCategoryProductContextRequest { + tagCategoryId: string; + productContextId: + | RemoveTagCategoryProductContextRequestProductContextId + | (string & {}); +} +export const RemoveTagCategoryProductContextRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + tagCategoryId: S.String.pipe(T.Label()), + productContextId: + RemoveTagCategoryProductContextRequestProductContextId.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/customer-trust/tag-categories/{tagCategoryId}/product-contexts/{productContextId}", + code: 200, + }), + ), +).annotate({ + identifier: "RemoveTagCategoryProductContextRequest", +}) as any as S.Schema; + +export interface RemoveTagCategoryProductContextResponse {} +export const RemoveTagCategoryProductContextResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "RemoveTagCategoryProductContextResponse", +}) as any as S.Schema; + +export interface RemoveTrustCenterViewerRequest { + slugId: string; + viewerId: string; +} +export const RemoveTrustCenterViewerRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + viewerId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "DELETE", + uri: "/trust-centers/{slugId}/viewers/{viewerId}", + code: 200, + }), + ), +).annotate({ + identifier: "RemoveTrustCenterViewerRequest", +}) as any as S.Schema; + +export interface RemoveTrustCenterViewerResponse {} +export const RemoveTrustCenterViewerResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "RemoveTrustCenterViewerResponse", +}) as any as S.Schema; + +export interface ReplaceDocumentResourceFileRequest { + id: string; + /** New document binary; replaces the existing file in place. */ + file: string; +} +export const ReplaceDocumentResourceFileRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String.pipe(T.Label()), + file: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/knowledge-base/resources/documents/{id}/upload", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "ReplaceDocumentResourceFileRequest", +}) as any as S.Schema; + +export interface SendNotificationsToAllSubscribersRequest { + slugId: string; + updateId: string; +} +export const SendNotificationsToAllSubscribersRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + updateId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/updates/{updateId}/notify-all-subscribers", + code: 200, + }), + ), +).annotate({ + identifier: "SendNotificationsToAllSubscribersRequest", +}) as any as S.Schema; + +export interface SendNotificationsToAllSubscribersResponse {} +export const SendNotificationsToAllSubscribersResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "SendNotificationsToAllSubscribersResponse", + }) as any as S.Schema; + +/** Additional email addresses to notify about this Trust Center update in addition to the existing Trust Center subscribers. Duplicate emails are deduplicated to ensure each recipient gets only one notification. */ +export type SendTrustCenterUpdateNotificationsRequestEmailsList = Array; +export const SendTrustCenterUpdateNotificationsRequestEmailsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** IDs of subscriber groups to notify. When `customerTrustAccounts` is also provided, only subscribers in these groups whose linked account matches are notified. */ +export type SendTrustCenterUpdateNotificationsRequestSubscriberGroupIdsList = + Array; +export const SendTrustCenterUpdateNotificationsRequestSubscriberGroupIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export type CustomerTrustAccountCustomFieldFilterValueCase1List = Array; +export const CustomerTrustAccountCustomFieldFilterValueCase1List = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** The value(s) to match against. Provide an array to match any of multiple values. */ +export type CustomerTrustAccountCustomFieldFilterValue = + | string + | CustomerTrustAccountCustomFieldFilterValueCase1List; +export const CustomerTrustAccountCustomFieldFilterValue = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +/** A single custom field filter condition. */ +export interface CustomerTrustAccountCustomFieldFilter { + /** The custom field label. */ + label: string; + /** The value(s) to match against. Provide an array to match any of multiple values. */ + value: CustomerTrustAccountCustomFieldFilterValue; +} +export const CustomerTrustAccountCustomFieldFilter = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + label: S.String, + value: CustomerTrustAccountCustomFieldFilterValue, + }), +).annotate({ + identifier: "CustomerTrustAccountCustomFieldFilter", +}) as any as S.Schema; + +/** Filter accounts by custom field label/value pairs. When `value` is an array, accounts matching any of the values are included. When multiple entries are provided, accounts must satisfy all of them. */ +export type CustomerTrustAccountsInputCustomFieldsFilterList = + Array; +export const CustomerTrustAccountsInputCustomFieldsFilterList = + /*@__PURE__*/ S.Array( + CustomerTrustAccountCustomFieldFilter, + ) as any as S.Schema; + +/** Narrow the candidate accounts resolved from `customFieldsFilter` to those with matching tags. Within a category entry, accounts matching any of the `tagIds` are included. When multiple entries are provided, accounts must satisfy all of them. */ +export type CustomerTrustAccountsInputTagsByCategoryList = + Array; +export const CustomerTrustAccountsInputTagsByCategoryList = + /*@__PURE__*/ S.Array( + TagsByCategoryInput, + ) as any as S.Schema; + +/** Account selectors for narrowing `GROUPS` notifications to subscribers with a matching linked account. */ +export interface CustomerTrustAccountsInput { + /** Filter accounts by custom field label/value pairs. When `value` is an array, accounts matching any of the values are included. When multiple entries are provided, accounts must satisfy all of them. */ + customFieldsFilter?: CustomerTrustAccountsInputCustomFieldsFilterList; + /** Narrow the candidate accounts resolved from `customFieldsFilter` to those with matching tags. Within a category entry, accounts matching any of the `tagIds` are included. When multiple entries are provided, accounts must satisfy all of them. */ + tagsByCategory?: CustomerTrustAccountsInputTagsByCategoryList; +} +export const CustomerTrustAccountsInput = /*@__PURE__*/ S.suspend(() => + S.Struct({ + customFieldsFilter: S.optional( + CustomerTrustAccountsInputCustomFieldsFilterList, + ), + tagsByCategory: S.optional(CustomerTrustAccountsInputTagsByCategoryList), + }), +).annotate({ + identifier: "CustomerTrustAccountsInput", +}) as any as S.Schema; + +export interface SendTrustCenterUpdateNotificationsRequest { + slugId: string; + updateId: string; + /** Additional email addresses to notify about this Trust Center update in addition to the existing Trust Center subscribers. Duplicate emails are deduplicated to ensure each recipient gets only one notification. */ + emails: SendTrustCenterUpdateNotificationsRequestEmailsList; + /** IDs of subscriber groups to notify. When `customerTrustAccounts` is also provided, only subscribers in these groups whose linked account matches are notified. */ + subscriberGroupIds: SendTrustCenterUpdateNotificationsRequestSubscriberGroupIdsList; + /** Optional account filters. When provided, only subscribers in `subscriberGroupIds` whose linked account matches all specified filters are notified. */ + customerTrustAccounts?: CustomerTrustAccountsInput; +} +export const SendTrustCenterUpdateNotificationsRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + updateId: S.String.pipe(T.Label()), + emails: SendTrustCenterUpdateNotificationsRequestEmailsList, + subscriberGroupIds: + SendTrustCenterUpdateNotificationsRequestSubscriberGroupIdsList, + customerTrustAccounts: S.optional(CustomerTrustAccountsInput), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/updates/{updateId}/notify-specific-subscribers", + code: 200, + }), + ), + ).annotate({ + identifier: "SendTrustCenterUpdateNotificationsRequest", + }) as any as S.Schema; + +export interface NotifySpecificSubscribersResponse { + /** The number of subscribers who will receive this notification. */ + recipientCount: number; +} +export const NotifySpecificSubscribersResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + recipientCount: S.Number, + }), +).annotate({ + identifier: "NotifySpecificSubscribersResponse", +}) as any as S.Schema; + +export interface SendTrustCenterViewerInviteReminderRequest { + slugId: string; + viewerId: string; +} +export const SendTrustCenterViewerInviteReminderRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + viewerId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/viewers/{viewerId}/send-invite-reminder", + code: 200, + }), + ), + ).annotate({ + identifier: "SendTrustCenterViewerInviteReminderRequest", + }) as any as S.Schema; + +/** Response returned after a viewer invite reminder is sent. */ +export interface InviteReminderResponse { + /** Whether the invite reminder email was successfully sent. */ + isSuccessful: boolean; +} +export const InviteReminderResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + isSuccessful: S.Boolean, + }), +).annotate({ + identifier: "InviteReminderResponse", +}) as any as S.Schema; + +export interface SetLeaveForPersonRequest { + personId: string; + /** The end date of the person's leave. If left empty, the leave is considered indefinite. */ + endDate: string | null; + /** The start date of the person's leave. */ + startDate: string; +} +export const SetLeaveForPersonRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + personId: S.String.pipe(T.Label()), + endDate: S.NullOr(S.String), + startDate: S.String, + }).pipe( + T.Http({ method: "POST", uri: "/people/{personId}/set-leave", code: 200 }), + ), +).annotate({ + identifier: "SetLeaveForPersonRequest", +}) as any as S.Schema; + +export interface SetOwnerForControlRequest { + controlId: string; + /** The new owner's ID. */ + userId: string | null; +} +export const SetOwnerForControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String.pipe(T.Label()), + userId: S.NullOr(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/controls/{controlId}/set-owner", + code: 200, + }), + ), +).annotate({ + identifier: "SetOwnerForControlRequest", +}) as any as S.Schema; + +export interface SetOwnerForDocumentRequest { + documentId: string; + /** The new owner ID */ + userId: string | null; +} +export const SetOwnerForDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + userId: S.NullOr(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/documents/{documentId}/set-owner", + code: 200, + }), + ), +).annotate({ + identifier: "SetOwnerForDocumentRequest", +}) as any as S.Schema; + +export interface SetStatusForVendorRequest { + vendorId: string; + /** Status of the vendor */ + status: string; +} +export const SetStatusForVendorRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + status: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/vendors/{vendorId}/set-status", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "SetStatusForVendorRequest", +}) as any as S.Schema; + +export interface SubmitDocumentCollectionRequest { + documentId: string; +} +export const SubmitDocumentCollectionRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + }).pipe( + T.Http({ + method: "POST", + uri: "/documents/{documentId}/submit", + code: 200, + }), + ), +).annotate({ + identifier: "SubmitDocumentCollectionRequest", +}) as any as S.Schema; + +export interface SubmitDocumentCollectionResponse {} +export const SubmitDocumentCollectionResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "SubmitDocumentCollectionResponse", +}) as any as S.Schema; + +export interface SubmitRiskForApprovalRequest { + riskScenarioId: string; + /** Optional comment to include with the approval request. */ + comment?: string; +} +export const SubmitRiskForApprovalRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + riskScenarioId: S.String.pipe(T.Label()), + comment: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/risk-scenarios/{riskScenarioId}/submit-for-approval", + code: 200, + }), + ), +).annotate({ + identifier: "SubmitRiskForApprovalRequest", +}) as any as S.Schema; + +/** Tags to associate with the entry. Replaces the existing tag set. Pass `[]` to clear all tags. Discover valid `categoryId` and `tagId` values via `GET /v1/customer-trust/tag-categories` (to list categories) and `GET /v1/customer-trust/tag-categories/{tagCategoryId}` (to list tags within a category). */ +export type UpdateAnswerLibraryEntryRouteRequestTagsList = Array; +export const UpdateAnswerLibraryEntryRouteRequestTagsList = + /*@__PURE__*/ S.Array( + TagInput, + ) as any as S.Schema; + +export interface UpdateAnswerLibraryEntryRouteRequest { + id: string; + /** The question text. */ + question?: string; + /** The answer text. */ + answer?: string; + /** The actor to assign as owner. Pass `null` to clear. Currently only type "User" is supported. */ + ownerAssignment?: AnswerLibraryActorAssignmentInput | null; + /** The expiration date in ISO 8601 format. Pass `null` to clear. */ + expirationDate?: string | null; + /** Tags to associate with the entry. Replaces the existing tag set. Pass `[]` to clear all tags. Discover valid `categoryId` and `tagId` values via `GET /v1/customer-trust/tag-categories` (to list categories) and `GET /v1/customer-trust/tag-categories/{tagCategoryId}` (to list tags within a category). */ + tags?: UpdateAnswerLibraryEntryRouteRequestTagsList; +} +export const UpdateAnswerLibraryEntryRouteRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String.pipe(T.Label()), + question: S.optional(S.String), + answer: S.optional(S.String), + ownerAssignment: S.optional(S.NullOr(AnswerLibraryActorAssignmentInput)), + expirationDate: S.optional(S.NullOr(S.String)), + tags: S.optional(UpdateAnswerLibraryEntryRouteRequestTagsList), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/knowledge-base/answer-library/{id}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateAnswerLibraryEntryRouteRequest", +}) as any as S.Schema; + +/** Compliance standard to associate with this framework. Pass null to unset. */ +export type UpdateComplianceFrameworkRequestStandard = + | "aiact" + | "aiuc1" + | "aue8" + | "awsFTR" + | "bsic5" + | "ccpa" + | "cisv8" + | "cjis" + | "cmmc2" + | "cps234" + | "cri" + | "dora" + | "fedRAMPr5" + | "fedramp" + | "fedramp20x" + | "fedramp20x_2026" + | "gdpr" + | "hipaa" + | "hitruste1" + | "iso9001" + | "iso27001" + | "iso27001_2022" + | "iso27017" + | "iso27018" + | "iso27701" + | "iso27701_2025" + | "iso42001" + | "msftSSPA" + | "mvsp" + | "nis2d" + | "nist53" + | "nist171" + | "nist171r3" + | "nistAiRmf" + | "nistCSF" + | "nistcsf2" + | "ofdss" + | "pciDss4" + | "pciSaqA" + | "pciSaqAEP" + | "pciSaqDMerchant" + | "pciSaqDSP" + | "soc2" + | "soxITGC" + | "t23nycrr500" + | "tisax" + | "tisax2027" + | "iso22301" + | "trust" + | "ukCyberEssentials" + | "ukCyberEssentials33" + | "usDataPrivacy" + | "fedrampKSI"; +export const UpdateComplianceFrameworkRequestStandard = /*@__PURE__*/ S.String; + +export interface UpdateComplianceFrameworkRequest { + slugId: string; + frameworkId: string; + /** Display name of the framework. */ + name?: string; + /** Compliance standard to associate with this framework. Pass null to unset. */ + standard?: UpdateComplianceFrameworkRequestStandard | (string & {}) | null; + /** Description of the framework. Pass null to unset. */ + description?: string | null; +} +export const UpdateComplianceFrameworkRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + frameworkId: S.String.pipe(T.Label()), + name: S.optional(S.String), + standard: S.optional(S.NullOr(UpdateComplianceFrameworkRequestStandard)), + description: S.optional(S.NullOr(S.String)), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/compliance-frameworks/{frameworkId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateComplianceFrameworkRequest", +}) as any as S.Schema; + +/** The control's new values for custom fields. */ +export type UpdateControlMetadataRequestCustomFieldsList = Array; +export const UpdateControlMetadataRequestCustomFieldsList = + /*@__PURE__*/ S.Array( + CustomField, + ) as any as S.Schema; + +export interface UpdateControlMetadataRequest { + controlId: string; + /** A new name for the control. */ + name?: string; + /** The new external ID for the control. */ + externalId?: string; + /** The new description for the control. */ + description?: string; + /** The new category for the control. */ + domain?: ControlDomain | (string & {}); + /** The new note for the control. */ + note?: string; + /** The control's new values for custom fields. */ + customFields?: UpdateControlMetadataRequestCustomFieldsList; +} +export const UpdateControlMetadataRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + controlId: S.String.pipe(T.Label()), + name: S.optional(S.String), + externalId: S.optional(S.String), + description: S.optional(S.String), + domain: S.optional(ControlDomain), + note: S.optional(S.String), + customFields: S.optional(UpdateControlMetadataRequestCustomFieldsList), + }).pipe(T.Http({ method: "PATCH", uri: "/controls/{controlId}", code: 200 })), +).annotate({ + identifier: "UpdateControlMetadataRequest", +}) as any as S.Schema; + +/** Updated custom field values for the account */ +export type UpdateCustomerTrustAccountRequestCustomFieldsList = + Array; +export const UpdateCustomerTrustAccountRequestCustomFieldsList = + /*@__PURE__*/ S.Array( + CustomField, + ) as any as S.Schema; + +/** Tags to assign to this account, grouped by category. Replaces existing tags per category. */ +export type UpdateCustomerTrustAccountRequestTagsByCategoryList = + Array; +export const UpdateCustomerTrustAccountRequestTagsByCategoryList = + /*@__PURE__*/ S.Array( + TagsByCategoryInput, + ) as any as S.Schema; + +export interface UpdateCustomerTrustAccountRequest { + accountId: string; + /** Updated name for the account */ + name?: string; + /** Updated primary email domain for the account */ + emailDomain?: string; + /** Updated custom field values for the account */ + customFields?: UpdateCustomerTrustAccountRequestCustomFieldsList; + /** Tags to assign to this account, grouped by category. Replaces existing tags per category. */ + tagsByCategory?: UpdateCustomerTrustAccountRequestTagsByCategoryList; +} +export const UpdateCustomerTrustAccountRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + accountId: S.String.pipe(T.Label()), + name: S.optional(S.String), + emailDomain: S.optional(S.String), + customFields: S.optional(UpdateCustomerTrustAccountRequestCustomFieldsList), + tagsByCategory: S.optional( + UpdateCustomerTrustAccountRequestTagsByCategoryList, + ), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/customer-trust/accounts/{accountId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateCustomerTrustAccountRequest", +}) as any as S.Schema; + +/** Customer-facing download permission for a knowledge-base resource on the Trust Center. Use {@link DOWNLOAD_PERMISSION_TO_DB} to translate to {@link TrustKnowledgeBaseResourceDownloadSetting} when persisting. */ +export type KnowledgeBaseResourceDownloadPermission = + | "VIEW_ONLY" + | "VIEW_AND_DOWNLOAD"; +export const KnowledgeBaseResourceDownloadPermission = /*@__PURE__*/ S.String; + +/** Tags to associate with the resource. A non-empty array replaces the existing tag set; pass `[]` to clear all tags. */ +export type UpdateDocumentResourceRequestTagsList = Array; +export const UpdateDocumentResourceRequestTagsList = /*@__PURE__*/ S.Array( + TagInput, +) as any as S.Schema; + +export interface UpdateDocumentResourceRequest { + id: string; + /** The title of the document resource. */ + title?: string; + /** A description for the document resource. Pass `null` to clear. */ + description?: string | null; + /** The actor to assign as owner. Pass `null` to clear. Currently only type "User" is supported. */ + ownerAssignment?: KnowledgeBaseResourceActorAssignmentInput | null; + /** Customer visibility on the Trust Center. */ + customerVisibility?: KnowledgeBaseCustomerVisibility | (string & {}); + /** Trust Center download permission. */ + downloadPermission?: KnowledgeBaseResourceDownloadPermission | (string & {}); + /** Whether the resource should be used for question-answering in Questionnaire Automation. */ + isUsedInQuestionnaires?: boolean; + /** Expiration date in ISO 8601 format. Pass `null` to clear. */ + expirationDate?: string | null; + /** Tags to associate with the resource. A non-empty array replaces the existing tag set; pass `[]` to clear all tags. */ + tags?: UpdateDocumentResourceRequestTagsList; + /** Trust Center category id to associate this resource with. Pass `null` to move the resource to uncategorized. Only valid when the resource's effective visibility (after applying any patched `customerVisibility`) is REQUEST_ACCESS or PUBLIC; other combinations and unknown ids return an InvalidInputError. */ + categoryId?: string | null; +} +export const UpdateDocumentResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String.pipe(T.Label()), + title: S.optional(S.String), + description: S.optional(S.NullOr(S.String)), + ownerAssignment: S.optional( + S.NullOr(KnowledgeBaseResourceActorAssignmentInput), + ), + customerVisibility: S.optional(KnowledgeBaseCustomerVisibility), + downloadPermission: S.optional(KnowledgeBaseResourceDownloadPermission), + isUsedInQuestionnaires: S.optional(S.Boolean), + expirationDate: S.optional(S.NullOr(S.String)), + tags: S.optional(UpdateDocumentResourceRequestTagsList), + categoryId: S.optional(S.NullOr(S.String)), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/knowledge-base/resources/documents/{id}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateDocumentResourceRequest", +}) as any as S.Schema; + +export interface UpdatePersonRequestName { + last: string; + first: string; +} +export const UpdatePersonRequestName = /*@__PURE__*/ S.suspend(() => + S.Struct({ + last: S.String, + first: S.String, + }), +).annotate({ + identifier: "UpdatePersonRequestName", +}) as any as S.Schema; + +export interface UpdatePersonRequestEmployment { + startDate?: string; +} +export const UpdatePersonRequestEmployment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + startDate: S.optional(S.String), + }), +).annotate({ + identifier: "UpdatePersonRequestEmployment", +}) as any as S.Schema; + +export interface UpdatePersonRequest { + personId: string; + name?: UpdatePersonRequestName; + employment?: UpdatePersonRequestEmployment; +} +export const UpdatePersonRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + personId: S.String.pipe(T.Label()), + name: S.optional(UpdatePersonRequestName), + employment: S.optional(UpdatePersonRequestEmployment), + }).pipe(T.Http({ method: "PATCH", uri: "/people/{personId}", code: 200 })), +).annotate({ + identifier: "UpdatePersonRequest", +}) as any as S.Schema; + +export type SettableQuestionnaireStatus = + | "IN_PROGRESS" + | "IN_REVIEW" + | "READY_FOR_REVIEW" + | "WAITING_ON_ANSWERS" + | "ON_HOLD" + | "NO_LONGER_NEEDED"; +export const SettableQuestionnaireStatus = /*@__PURE__*/ S.String; + +/** The type of actor: "User" for an individual user, "Team" for a team. */ +export type UpdateActorAssignmentType = "User" | "Team"; +export const UpdateActorAssignmentType = /*@__PURE__*/ S.String; + +/** Actor assignment for setting an owner or approver. */ +export interface UpdateActorAssignment { + /** The type of actor: "User" for an individual user, "Team" for a team. */ + type: UpdateActorAssignmentType | (string & {}); + /** The unique identifier of the user or team. */ + id: string; +} +export const UpdateActorAssignment = /*@__PURE__*/ S.suspend(() => + S.Struct({ + type: UpdateActorAssignmentType, + id: S.String, + }), +).annotate({ + identifier: "UpdateActorAssignment", +}) as any as S.Schema; + +/** Metadata key-value pairs */ +export type UpdateQuestionnaireRequestMetadataList = + Array; +export const UpdateQuestionnaireRequestMetadataList = /*@__PURE__*/ S.Array( + QuestionnaireMetadata, +) as any as S.Schema; + +/** Tags to assign to the questionnaire. Each entry must include a categoryId and tagId. Replaces all existing tags. */ +export type UpdateQuestionnaireRequestTagAndCategoryIdsList = Array; +export const UpdateQuestionnaireRequestTagAndCategoryIdsList = + /*@__PURE__*/ S.Array( + TagInput, + ) as any as S.Schema; + +export interface UpdateQuestionnaireRequest { + questionnaireId: string; + /** Display name of the questionnaire */ + displayName?: string; + /** Due date for questionnaire completion (ISO 8601 string, null to clear) */ + dueDate?: string | null; + /** Status transition (limited to settable statuses) */ + status?: SettableQuestionnaireStatus | (string & {}); + /** Owner assignment as Actor (null to unassign) */ + ownerAssignment?: UpdateActorAssignment | null; + /** Approver assignment as Actor (null to unassign, requires QuestionnaireAutomationAdvanced) */ + approverAssignment?: UpdateActorAssignment | null; + /** Metadata key-value pairs */ + metadata?: UpdateQuestionnaireRequestMetadataList; + /** Tags to assign to the questionnaire. Each entry must include a categoryId and tagId. Replaces all existing tags. */ + tagAndCategoryIds?: UpdateQuestionnaireRequestTagAndCategoryIdsList; +} +export const UpdateQuestionnaireRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaireId: S.String.pipe(T.Label()), + displayName: S.optional(S.String), + dueDate: S.optional(S.NullOr(S.String)), + status: S.optional(SettableQuestionnaireStatus), + ownerAssignment: S.optional(S.NullOr(UpdateActorAssignment)), + approverAssignment: S.optional(S.NullOr(UpdateActorAssignment)), + metadata: S.optional(UpdateQuestionnaireRequestMetadataList), + tagAndCategoryIds: S.optional( + UpdateQuestionnaireRequestTagAndCategoryIdsList, + ), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/customer-trust/questionnaires/{questionnaireId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateQuestionnaireRequest", +}) as any as S.Schema; + +/** Construct a type with a set of properties K of type T */ +export type RecordStringUnknown = { [key: string]: unknown | undefined }; +export const RecordStringUnknown = /*@__PURE__*/ S.Record( + S.String, + S.Unknown, +) as any as S.Schema; + +export interface UpdateQuestionnaireResponseContentRequest { + questionnaireId: string; + responseId: string; + /** Map of answer part id -> value, matching the shape of the `answerPartsValues` read field. Values must be string, number, boolean, null, or string[]. A null value clears that part's value; ids omitted from the map are left unchanged. */ + answerPartsValues: RecordStringUnknown; +} +export const UpdateQuestionnaireResponseContentRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaireId: S.String.pipe(T.Label()), + responseId: S.String.pipe(T.Label()), + answerPartsValues: RecordStringUnknown, + }).pipe( + T.Http({ + method: "PATCH", + uri: "/customer-trust/questionnaires/{questionnaireId}/responses/{responseId}", + code: 200, + }), + ), + ).annotate({ + identifier: "UpdateQuestionnaireResponseContentRequest", + }) as any as S.Schema; + +export interface UpdateQuestionnaireResponseOwnerRequest { + questionnaireId: string; + responseId: string; + /** New owner, or null to clear the current owner. */ + ownerAssignment: UpdateActorAssignment | null; +} +export const UpdateQuestionnaireResponseOwnerRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + questionnaireId: S.String.pipe(T.Label()), + responseId: S.String.pipe(T.Label()), + ownerAssignment: S.NullOr(UpdateActorAssignment), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/customer-trust/questionnaires/{questionnaireId}/responses/{responseId}/owner", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateQuestionnaireResponseOwnerRequest", +}) as any as S.Schema; + +export interface UpdateResourceRequest2 { + /** Unique identifier of the integration. */ + integrationId: string; + /** Unique identifier of the integration resource kind. */ + resourceKind: string; + /** Unique identifier of the resource. */ + resourceId: string; + /** Determines whether resources should be marked as in scope. */ + inScope?: boolean; + /** Description to update for the resources. */ + description?: string; + /** Owner ID to update for the resources. */ + ownerId?: string; +} +export const UpdateResourceRequest2 = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String.pipe(T.Label()), + resourceKind: S.String.pipe(T.Label()), + resourceId: S.String.pipe(T.Label()), + inScope: S.optional(S.Boolean), + description: S.optional(S.String), + ownerId: S.optional(S.String), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/integrations/{integrationId}/resource-kinds/{resourceKind}/resources/{resourceId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateResourceRequest2", +}) as any as S.Schema; + +export interface UpdateResourceResponse {} +export const UpdateResourceResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "UpdateResourceResponse", +}) as any as S.Schema; + +export interface UpdateResourceRequest { + /** ID of the resource to update. */ + id: string; + /** Owner ID to update for the resource. */ + ownerId?: string; + /** Description to update for the resource. */ + description?: string; + /** Determines whether resources should be marked in scope or not. */ + inScope?: boolean; +} +export const UpdateResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + ownerId: S.optional(S.String), + description: S.optional(S.String), + inScope: S.optional(S.Boolean), + }), +).annotate({ + identifier: "UpdateResourceRequest", +}) as any as S.Schema; + +/** List of resource update requests. */ +export type UpdateResourcesRequestUpdatesList = Array; +export const UpdateResourcesRequestUpdatesList = /*@__PURE__*/ S.Array( + UpdateResourceRequest, +) as any as S.Schema; + +export interface UpdateResourcesRequest { + /** Unique identifier of the integration. */ + integrationId: string; + /** Unique identifier of the integration resource kind. */ + resourceKind: string; + /** List of resource update requests. */ + updates: UpdateResourcesRequestUpdatesList; +} +export const UpdateResourcesRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + integrationId: S.String.pipe(T.Label()), + resourceKind: S.String.pipe(T.Label()), + updates: UpdateResourcesRequestUpdatesList, + }).pipe( + T.Http({ + method: "PATCH", + uri: "/integrations/{integrationId}/resource-kinds/{resourceKind}/resources", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateResourcesRequest", +}) as any as S.Schema; + +/** The list of categories this risk scenario belongs to. Each element in the list will become a new custom category if it doesn't match an existing one. You can reference the current category options in the Risk Management settings and/or enter new values. */ +export type UpdateRiskScenarioRequestCategoriesList = Array; +export const UpdateRiskScenarioRequestCategoriesList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** Enter a list of the following for the type of risk documented: - Confidentiality: Risk to data stores, customer/sensitive information, etc. - Integrity: Risk to accuracy or integrity of system settings and/or data - Availability: Risk to normal service operations and critical system functionality */ +export type UpdateRiskScenarioRequestCiaCategoriesList = Array< + CIA | (string & {}) +>; +export const UpdateRiskScenarioRequestCiaCategoriesList = /*@__PURE__*/ S.Array( + CIA, +) as any as S.Schema; + +/** The list of custom fields. You can reference custom fields in the Risk Management settings and/or create new one. The format is: - {label: "field-name", value: "string-representation"} for text, date, number and currency fields - {label: "field-name", value: ["option1", "option2"]} for picklist fields */ +export type UpdateRiskScenarioRequestCustomFieldsList = Array; +export const UpdateRiskScenarioRequestCustomFieldsList = /*@__PURE__*/ S.Array( + CustomAttribute, +) as any as S.Schema; + +export interface UpdateRiskScenarioRequest { + riskScenarioId: string; + /** This describes an actual or potential risk to your organization's people, processes, technology, data, and facilities. Document actual issues or likely scenarios based on your specific environment or a potential vulnerability. */ + description?: string; + /** Optional long-form description providing extended context for the risk scenario. Maximum 10000 characters. */ + detailedDescription?: string; + /** If set to true this risk can only be seen by its owner or users with Admin, RiskSensitiveManage or RiskSensitiveView permissions. */ + isSensitive?: boolean; + /** Represents the probability of an incident occurring due to this risk or vulnerability, expressed as a numerical score. Defaults to a range of 1-5, where higher values indicate greater likelihood. The range can be customized in the Risk Management settings. */ + likelihood?: number; + /** Represents the potential severity of harm to your organization’s operations if this risk is exploited, expressed as a numerical score. Defaults to a range of 1-5, where higher values indicate greater impact. The range can be customized in the Risk Management settings. */ + impact?: number; + /** Represents the adjusted probability of this risk being exploited or affecting operations after implementing risk treatments, such as controls or mitigations. Expressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings. */ + residualLikelihood?: number; + /** Represents the adjusted severity of harm to your organization’s operations if this risk is exploited after implementing risk treatments, such as controls or mitigations. Expressed as a numerical score, defaulting to a range of 1-5. The range can be customized in the Risk Management settings. */ + residualImpact?: number; + /** The list of categories this risk scenario belongs to. Each element in the list will become a new custom category if it doesn't match an existing one. You can reference the current category options in the Risk Management settings and/or enter new values. */ + categories?: UpdateRiskScenarioRequestCategoriesList; + /** Enter a list of the following for the type of risk documented: - Confidentiality: Risk to data stores, customer/sensitive information, etc. - Integrity: Risk to accuracy or integrity of system settings and/or data - Availability: Risk to normal service operations and critical system functionality */ + ciaCategories?: UpdateRiskScenarioRequestCiaCategoriesList; + /** Indicate how your leadership team wants to address an identified risk. Please note: not all risks need to be addressed immediately (or at all). Your Risk Treatment decision will depend on multiple factors, such as your organization's risk tolerance and the value of the asset that the risk is associated with. The options are: - Mitigate: Identify controls to put in place or tasks to be done that will reduce the risk score. - Transfer: Move risk outside of your organization's set of responsibilities e.g. get cyber liability insurance. - Avoid: Stop doing the activity which is causing the risk to your organization and its assets. - Accept: Decide to live with the risk and take no further actions. - Accept: decide to live with the risk; this may be because it is highly unlikely, has a low financial or operational impact, or the cost and effort to treat the risk far exceeds the value of the asset */ + treatment?: Treatment | (string & {}); + /** The person responsible for tracking and mitigating this risk scenario. This should be the email address of a valid Vanta user. */ + owner?: string | null; + /** Additional context about the risk scenario and why it has specific impact and likelihood scores. */ + note?: string; + /** Name of the risk register to associate with this scenario. */ + riskRegister?: string; + /** The list of custom fields. You can reference custom fields in the Risk Management settings and/or create new one. The format is: - {label: "field-name", value: "string-representation"} for text, date, number and currency fields - {label: "field-name", value: ["option1", "option2"]} for picklist fields */ + customFields?: UpdateRiskScenarioRequestCustomFieldsList; + /** Changing the risk scenario type (`"Risk Scenario"` vs. `"Enterprise Risk"`) is not supported via update. Requests that include this field will be rejected. To change a risk's type, create a new scenario with the desired type and archive the old one. */ + type?: RiskScenarioType | (string & {}); + /** The date this risk was identified. Matches the "Identified Date" field in the Vanta UI. Omitting the field leaves the existing value unchanged. */ + identificationDate?: string; +} +export const UpdateRiskScenarioRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + riskScenarioId: S.String.pipe(T.Label()), + description: S.optional(S.String), + detailedDescription: S.optional(S.String), + isSensitive: S.optional(S.Boolean), + likelihood: S.optional(S.Number), + impact: S.optional(S.Number), + residualLikelihood: S.optional(S.Number), + residualImpact: S.optional(S.Number), + categories: S.optional(UpdateRiskScenarioRequestCategoriesList), + ciaCategories: S.optional(UpdateRiskScenarioRequestCiaCategoriesList), + treatment: S.optional(Treatment), + owner: S.optional(S.NullOr(S.String)), + note: S.optional(S.String), + riskRegister: S.optional(S.String), + customFields: S.optional(UpdateRiskScenarioRequestCustomFieldsList), + type: S.optional(RiskScenarioType), + identificationDate: S.optional(S.String), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/risk-scenarios/{riskScenarioId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateRiskScenarioRequest", +}) as any as S.Schema; + +export interface UpdateRiskScenarioControlRequest { + riskScenarioId: string; + controlId: string; + /** The new relationship state. `TREATMENT_PLAN` moves the control into the risk's treatment plan; `EXISTING` removes it from the treatment plan while keeping it linked as an existing control (use DELETE to unlink entirely). */ + controlType: RiskScenarioControlType | (string & {}); +} +export const UpdateRiskScenarioControlRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + riskScenarioId: S.String.pipe(T.Label()), + controlId: S.String.pipe(T.Label()), + controlType: RiskScenarioControlType, + }).pipe( + T.Http({ + method: "PATCH", + uri: "/risk-scenarios/{riskScenarioId}/controls/{controlId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateRiskScenarioControlRequest", +}) as any as S.Schema; + +export type BannerSettingGRADIENT = "GRADIENT"; +export const BannerSettingGRADIENT = /*@__PURE__*/ S.String; + +export type BannerSettingMINIMAL = "MINIMAL"; +export const BannerSettingMINIMAL = /*@__PURE__*/ S.String; + +export type ApiSelectableBannerSetting = + | BannerSettingGRADIENT + | BannerSettingMINIMAL; +export const ApiSelectableBannerSetting = + /*@__PURE__*/ S.Unknown as any as S.Schema; + +/** The banner configuration of the Trust Center. */ +export interface UpdateTrustCenterRequestBannerSetting { + /** End color of the banner. Only applies if setting is GRADIENT. */ + endColor?: string; + /** Start color of the banner. Only applies if setting is GRADIENT. */ + startColor?: string; + /** The banner style to use. Must be one of "GRADIENT" or "MINIMAL". */ + setting: ApiSelectableBannerSetting; +} +export const UpdateTrustCenterRequestBannerSetting = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + endColor: S.optional(S.String), + startColor: S.optional(S.String), + setting: ApiSelectableBannerSetting, + }), +).annotate({ + identifier: "UpdateTrustCenterRequestBannerSetting", +}) as any as S.Schema; + +/** The custom theme configuration for the Trust Center. */ +export interface UpdateTrustCenterRequestCustomTheme { + /** Secondary color for the theme. If null is passed in, resets to default. */ + secondary?: string | null; + /** Primary color for the theme. If null is passed in, resets to default. */ + primary?: string | null; +} +export const UpdateTrustCenterRequestCustomTheme = /*@__PURE__*/ S.suspend(() => + S.Struct({ + secondary: S.optional(S.NullOr(S.String)), + primary: S.optional(S.NullOr(S.String)), + }), +).annotate({ + identifier: "UpdateTrustCenterRequestCustomTheme", +}) as any as S.Schema; + +export interface UpdateTrustCenterRequest { + slugId: string; + /** Custom title for the Trust Center. If null is passed in, the current custom title is unset and the default title is restored. */ + title?: string | null; + /** Company description displayed in the Trust Center header. If null is passed in, the current company description is unset. */ + companyDescription?: string | null; + /** The banner configuration of the Trust Center. */ + bannerSetting?: UpdateTrustCenterRequestBannerSetting; + /** The custom theme configuration for the Trust Center. */ + customTheme?: UpdateTrustCenterRequestCustomTheme; + /** Privacy policy URL to set on the Trust Center. If null is passed in, unsets the current privacy policy. */ + privacyPolicy?: string | null; + /** AWS Marketplace listing URL to set on the Trust Center. If null is passed in, unsets the current AWS Marketplace listing. */ + awsMarketplaceListing?: string | null; + /** Whether the Trust Center is public or not. */ + isPublic?: boolean; + /** Contact email displayed on the Trust Center. If null is passed in, unsets the current contact email. */ + contactEmail?: string | null; + /** Custom heading displayed on the Trust Center. If null is passed in, unsets the current custom heading. */ + customHeading?: string | null; + /** The default status-visibility mode applied to all controls that don't have a category-level override. Omit to leave unchanged. Only settable for domains with the Vanta Compliance Platform; other domains have no control status to render. */ + controlVisibilityMode?: TrustCenterControlVisibilityMode | (string & {}); +} +export const UpdateTrustCenterRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + title: S.optional(S.NullOr(S.String)), + companyDescription: S.optional(S.NullOr(S.String)), + bannerSetting: S.optional(UpdateTrustCenterRequestBannerSetting), + customTheme: S.optional(UpdateTrustCenterRequestCustomTheme), + privacyPolicy: S.optional(S.NullOr(S.String)), + awsMarketplaceListing: S.optional(S.NullOr(S.String)), + isPublic: S.optional(S.Boolean), + contactEmail: S.optional(S.NullOr(S.String)), + customHeading: S.optional(S.NullOr(S.String)), + controlVisibilityMode: S.optional(TrustCenterControlVisibilityMode), + }).pipe( + T.Http({ method: "PATCH", uri: "/trust-centers/{slugId}", code: 200 }), + ), +).annotate({ + identifier: "UpdateTrustCenterRequest", +}) as any as S.Schema; + +export interface UpdateTrustCenterControlCategoryRequest { + slugId: string; + categoryId: string; + /** New name for the category. Omit to leave the name unchanged. */ + name?: string; + /** Visibility of the category's controls on the Trust Center. Omit to leave unchanged. */ + visibility?: TrustCenterControlVisibility | (string & {}); + /** Per-category status-visibility override. Omit to leave unchanged; pass `null` to clear the override and fall back to the Trust Center's global default. */ + statusVisibilityOverride?: + | TrustCenterControlVisibilityMode + | (string & {}) + | null; +} +export const UpdateTrustCenterControlCategoryRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + categoryId: S.String.pipe(T.Label()), + name: S.optional(S.String), + visibility: S.optional(TrustCenterControlVisibility), + statusVisibilityOverride: S.optional( + S.NullOr(TrustCenterControlVisibilityMode), + ), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/control-categories/{categoryId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateTrustCenterControlCategoryRequest", +}) as any as S.Schema; + +/** IDs of controls to add to the category. */ +export type UpdateTrustCenterControlsInCategoryRequestControlsToAddList = + Array; +export const UpdateTrustCenterControlsInCategoryRequestControlsToAddList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +/** IDs of controls to remove from the category. */ +export type UpdateTrustCenterControlsInCategoryRequestControlsToRemoveList = + Array; +export const UpdateTrustCenterControlsInCategoryRequestControlsToRemoveList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface UpdateTrustCenterControlsInCategoryRequest { + slugId: string; + categoryId: string; + /** IDs of controls to add to the category. */ + controlsToAdd: UpdateTrustCenterControlsInCategoryRequestControlsToAddList; + /** IDs of controls to remove from the category. */ + controlsToRemove: UpdateTrustCenterControlsInCategoryRequestControlsToRemoveList; +} +export const UpdateTrustCenterControlsInCategoryRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + categoryId: S.String.pipe(T.Label()), + controlsToAdd: + UpdateTrustCenterControlsInCategoryRequestControlsToAddList, + controlsToRemove: + UpdateTrustCenterControlsInCategoryRequestControlsToRemoveList, + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/control-categories/{categoryId}/controls", + code: 200, + }), + ), + ).annotate({ + identifier: "UpdateTrustCenterControlsInCategoryRequest", + }) as any as S.Schema; + +export interface UpdateTrustCenterFaqRequest { + slugId: string; + faqId: string; + /** The FAQ question. */ + question: string; + /** The FAQ answer. */ + answer: string; + /** The category to place this FAQ in. Pass null to move to uncategorized. Omit to leave unchanged (on update) or default to uncategorized (on create). */ + categoryId?: string | null; +} +export const UpdateTrustCenterFaqRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + faqId: S.String.pipe(T.Label()), + question: S.String, + answer: S.String, + categoryId: S.optional(S.NullOr(S.String)), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/faqs/{faqId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateTrustCenterFaqRequest", +}) as any as S.Schema; + +export interface UpdateTrustCenterFaqCategoryRequest { + slugId: string; + categoryId: string; + /** New name for the category. */ + name: string; +} +export const UpdateTrustCenterFaqCategoryRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + categoryId: S.String.pipe(T.Label()), + name: S.String, + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/faq-categories/{categoryId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateTrustCenterFaqCategoryRequest", +}) as any as S.Schema; + +export interface UpdateTrustCenterResourceRequest { + slugId: string; + resourceId: string; + /** Title of the Trust Center document. */ + title?: string; + /** Boolean determining whether the document is publicly available. */ + isPublic?: boolean; + /** Description of the uploaded document. */ + description?: string; +} +export const UpdateTrustCenterResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + resourceId: S.String.pipe(T.Label()), + title: S.optional(S.String), + isPublic: S.optional(S.Boolean), + description: S.optional(S.String), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/resources/{resourceId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateTrustCenterResourceRequest", +}) as any as S.Schema; + +export interface UpdateTrustCenterResourceCategoryRequest { + slugId: string; + categoryId: string; + /** New name for the category. */ + name: string; +} +export const UpdateTrustCenterResourceCategoryRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + categoryId: S.String.pipe(T.Label()), + name: S.String, + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/resource-categories/{categoryId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateTrustCenterResourceCategoryRequest", +}) as any as S.Schema; + +export interface UpdateTrustCenterSubprocessorRequest { + slugId: string; + subprocessorId: string; + /** What to set the subprocessor description to. If null is passed in, the subprocessor's current description is unset. */ + description?: string | null; + /** What to set the subprocessor location to. If null is passed in, the subprocessor's current description is unset. */ + location?: string | null; + /** What to set the subprocessor purpose to. If null is passed in, the subprocessor's current description is unset. */ + purpose?: string | null; +} +export const UpdateTrustCenterSubprocessorRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + subprocessorId: S.String.pipe(T.Label()), + description: S.optional(S.NullOr(S.String)), + location: S.optional(S.NullOr(S.String)), + purpose: S.optional(S.NullOr(S.String)), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/subprocessors/{subprocessorId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateTrustCenterSubprocessorRequest", +}) as any as S.Schema; + +export interface UpdateTrustCenterSubscriberGroupRequest { + slugId: string; + subscriberGroupId: string; + /** Updated name of the subscriber group. */ + name: string; +} +export const UpdateTrustCenterSubscriberGroupRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + subscriberGroupId: S.String.pipe(T.Label()), + name: S.String, + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/subscriber-groups/{subscriberGroupId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateTrustCenterSubscriberGroupRequest", +}) as any as S.Schema; + +export interface UpdateTrustCenterUpdateRequest { + slugId: string; + updateId: string; + /** Title of the update. */ + title: string; + /** Description of the update. */ + description: string; + /** Category of the update. */ + category: UpdateCategory | (string & {}); + /** Visibility type of the update. */ + visibilityType?: UpdateVisibilityType | (string & {}); +} +export const UpdateTrustCenterUpdateRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + updateId: S.String.pipe(T.Label()), + title: S.String, + description: S.String, + category: UpdateCategory, + visibilityType: S.optional(UpdateVisibilityType), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/updates/{updateId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateTrustCenterUpdateRequest", +}) as any as S.Schema; + +/** Identifiers for the resources that this viewer should have access to. */ +export type UpdateTrustCenterViewerRequestResourceIdsList = Array; +export const UpdateTrustCenterViewerRequestResourceIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface UpdateTrustCenterViewerRequest { + slugId: string; + viewerId: string; + /** Access level for the viewer. */ + accessLevel?: ViewerAccessLevel | (string & {}); + /** Identifiers for the resources that this viewer should have access to. */ + resourceIds?: UpdateTrustCenterViewerRequestResourceIdsList; + /** The date access should expire for this viewer. Set to null to remove expiration. */ + expirationDate?: string | null; + /** Whether to require an NDA for the viewer. */ + isNdaRequired?: boolean; + /** ID of a Customer Trust Account to associate with this viewer. Set to null to remove the association. Omit to leave unchanged. */ + customerTrustAccountId?: string | null; +} +export const UpdateTrustCenterViewerRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + viewerId: S.String.pipe(T.Label()), + accessLevel: S.optional(ViewerAccessLevel), + resourceIds: S.optional(UpdateTrustCenterViewerRequestResourceIdsList), + expirationDate: S.optional(S.NullOr(S.String)), + isNdaRequired: S.optional(S.Boolean), + customerTrustAccountId: S.optional(S.NullOr(S.String)), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/trust-centers/{slugId}/viewers/{viewerId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateTrustCenterViewerRequest", +}) as any as S.Schema; + +/** The authentication details about the vendor. */ +export interface UpdateVendorRequestAuthDetails { + /** Minimum number for chacters required for passwords for this vendor. */ + passwordMinimumLength?: number; + /** Whether or not the vendor requires passwords to have a symbol. */ + passwordRequiresSymbol?: boolean; + /** Whether or not the vendor requires passwords to have a number. */ + passwordRequiresNumber?: boolean; + /** Whether or not the vendor requires password multi factor authentication. */ + passwordMFA?: boolean; + /** The authentication method the vendor uses. */ + method?: VendorAuthenticationMethod | (string & {}) | null; +} +export const UpdateVendorRequestAuthDetails = /*@__PURE__*/ S.suspend(() => + S.Struct({ + passwordMinimumLength: S.optional(S.Number), + passwordRequiresSymbol: S.optional(S.Boolean), + passwordRequiresNumber: S.optional(S.Boolean), + passwordMFA: S.optional(S.Boolean), + method: S.optional(S.NullOr(VendorAuthenticationMethod)), + }), +).annotate({ + identifier: "UpdateVendorRequestAuthDetails", +}) as any as S.Schema; + +/** A list of risk attribute ids the vendor has been assigned. */ +export type UpdateVendorRequestRiskAttributeIdsList = Array; +export const UpdateVendorRequestRiskAttributeIdsList = /*@__PURE__*/ S.Array( + S.String, +) as any as S.Schema; + +/** The custom fields for the vendor. For more information on how to set custom fields via the API, visit https://developer.vanta.com/docs/guides/use-custom-fields-with-vendors */ +export type UpdateVendorRequestCustomFieldsList = Array; +export const UpdateVendorRequestCustomFieldsList = /*@__PURE__*/ S.Array( + CustomField, +) as any as S.Schema; + +export interface UpdateVendorRequest { + vendorId: string; + /** Display name of the vendor. */ + name?: string; + /** The url of the vendor's website. */ + websiteUrl?: string | null; + /** Name of the external account manager for this vendor. */ + accountManagerName?: string | null; + /** Email of the external account manager for this vendor. */ + accountManagerEmail?: string; + /** The Vanta user ID of the security owner of this vendor. */ + securityOwnerUserId?: string | null; + /** Services provided by the vendor. */ + servicesProvided?: string | null; + /** Miscellaneous notes about the vendor */ + additionalNotes?: string | null; + /** The Vanta user ID of the business owner of this vendor. */ + businessOwnerUserId?: string | null; + /** When the contract with the vendor is up for renewal. */ + contractStartDate?: string | null; + /** When the contract with the vendor is up for renewal. */ + contractRenewalDate?: string | null; + /** When the contract with the vendor was terminated. */ + contractTerminationDate?: string | null; + /** Whether or not auditors can view this vendor. */ + isVisibleToAuditors?: boolean; + /** The authentication details about the vendor. */ + authDetails?: UpdateVendorRequestAuthDetails; + /** The current status of the vendor. */ + status?: VendorStatus | (string & {}); + /** The vendor's category. */ + category?: string; + /** The inherent risk level of the vendor. Setting it to null means it will be auto-scored by Vanta based on the risk attributes and rubric */ + inherentRiskLevel?: VendorRiskLevel | (string & {}) | null; + /** The residual risk level of the vendor. */ + residualRiskLevel?: VendorRiskLevel | (string & {}); + /** A list of risk attribute ids the vendor has been assigned. */ + riskAttributeIds?: UpdateVendorRequestRiskAttributeIdsList; + /** The vendor's headquarters. */ + vendorHeadquarters?: CountryCode | (string & {}) | null; + /** The contract amount for the vendor. */ + contractAmount?: VendorContractAmount | null; + /** The custom fields for the vendor. For more information on how to set custom fields via the API, visit https://developer.vanta.com/docs/guides/use-custom-fields-with-vendors */ + customFields?: UpdateVendorRequestCustomFieldsList; + /** Framework scoping configuration for this vendor. Determines which compliance frameworks the vendor applies to. */ + frameworkScope?: VendorFrameworkScope; +} +export const UpdateVendorRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + name: S.optional(S.String), + websiteUrl: S.optional(S.NullOr(S.String)), + accountManagerName: S.optional(S.NullOr(S.String)), + accountManagerEmail: S.optional(S.String), + securityOwnerUserId: S.optional(S.NullOr(S.String)), + servicesProvided: S.optional(S.NullOr(S.String)), + additionalNotes: S.optional(S.NullOr(S.String)), + businessOwnerUserId: S.optional(S.NullOr(S.String)), + contractStartDate: S.optional(S.NullOr(S.String)), + contractRenewalDate: S.optional(S.NullOr(S.String)), + contractTerminationDate: S.optional(S.NullOr(S.String)), + isVisibleToAuditors: S.optional(S.Boolean), + authDetails: S.optional(UpdateVendorRequestAuthDetails), + status: S.optional(VendorStatus), + category: S.optional(S.String), + inherentRiskLevel: S.optional(S.NullOr(VendorRiskLevel)), + residualRiskLevel: S.optional(VendorRiskLevel), + riskAttributeIds: S.optional(UpdateVendorRequestRiskAttributeIdsList), + vendorHeadquarters: S.optional(S.NullOr(CountryCode)), + contractAmount: S.optional(S.NullOr(VendorContractAmount)), + customFields: S.optional(UpdateVendorRequestCustomFieldsList), + frameworkScope: S.optional(VendorFrameworkScope), + }).pipe(T.Http({ method: "PATCH", uri: "/vendors/{vendorId}", code: 200 })), +).annotate({ + identifier: "UpdateVendorRequest", +}) as any as S.Schema; + +/** Remediation information about the finding. Will only be populated if riskStatus is set to "REMEDIATE". */ +export type UpdateVendorFindingRequestRemediation = + CreateVendorFindingRequestRemediation; +export const UpdateVendorFindingRequestRemediation = + CreateVendorFindingRequestRemediation; + +export interface UpdateVendorFindingRequest { + vendorId: string; + findingId: string; + /** The content of the finding. */ + content?: string; + /** The risk status of the finding. */ + riskStatus?: FindingRiskStatus | (string & {}); + /** Remediation information about the finding. Will only be populated if riskStatus is set to "REMEDIATE". */ + remediation?: CreateVendorFindingRequestRemediation; +} +export const UpdateVendorFindingRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + findingId: S.String.pipe(T.Label()), + content: S.optional(S.String), + riskStatus: S.optional(FindingRiskStatus), + remediation: S.optional(CreateVendorFindingRequestRemediation), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/vendors/{vendorId}/findings/{findingId}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateVendorFindingRequest", +}) as any as S.Schema; + +/** Tags to associate with the resource. A non-empty array replaces the existing tag set; pass `[]` to clear all tags. */ +export type UpdateWebpageResourceRequestTagsList = Array; +export const UpdateWebpageResourceRequestTagsList = /*@__PURE__*/ S.Array( + TagInput, +) as any as S.Schema; + +export interface UpdateWebpageResourceRequest { + id: string; + /** The title of the webpage resource. */ + title?: string; + /** A description for the webpage resource. Pass `null` to clear. */ + description?: string | null; + /** The actor to assign as owner. Pass `null` to clear. Currently only type "User" is supported. */ + ownerAssignment?: KnowledgeBaseResourceActorAssignmentInput | null; + /** Customer visibility on the Trust Center. Webpage resources accept only PRIVATE or PUBLIC; REQUEST_ACCESS and SHAREABLE return an InvalidInputError. */ + customerVisibility?: KnowledgeBaseCustomerVisibility | (string & {}); + /** Whether to scan sub-pages one level deep alongside the primary URL. */ + includeSubPages?: boolean; + /** Whether the resource should be used for question-answering in Questionnaire Automation. */ + isUsedInQuestionnaires?: boolean; + /** Expiration date in ISO 8601 format. Pass `null` to clear. */ + expirationDate?: string | null; + /** Tags to associate with the resource. A non-empty array replaces the existing tag set; pass `[]` to clear all tags. */ + tags?: UpdateWebpageResourceRequestTagsList; + /** Trust Center category id to associate this resource with. Pass `null` to move the resource to uncategorized. Only valid when the resource's effective visibility (after applying any patched `customerVisibility`) is PUBLIC; other combinations and unknown ids return an InvalidInputError. */ + categoryId?: string | null; +} +export const UpdateWebpageResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String.pipe(T.Label()), + title: S.optional(S.String), + description: S.optional(S.NullOr(S.String)), + ownerAssignment: S.optional( + S.NullOr(KnowledgeBaseResourceActorAssignmentInput), + ), + customerVisibility: S.optional(KnowledgeBaseCustomerVisibility), + includeSubPages: S.optional(S.Boolean), + isUsedInQuestionnaires: S.optional(S.Boolean), + expirationDate: S.optional(S.NullOr(S.String)), + tags: S.optional(UpdateWebpageResourceRequestTagsList), + categoryId: S.optional(S.NullOr(S.String)), + }).pipe( + T.Http({ + method: "PATCH", + uri: "/knowledge-base/resources/webpages/{id}", + code: 200, + }), + ), +).annotate({ + identifier: "UpdateWebpageResourceRequest", +}) as any as S.Schema; + +export interface UploadComplianceFrameworkBadgeRequest { + slugId: string; + frameworkId: string; + file: string; +} +export const UploadComplianceFrameworkBadgeRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + frameworkId: S.String.pipe(T.Label()), + file: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/compliance-frameworks/{frameworkId}/badge", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "UploadComplianceFrameworkBadgeRequest", +}) as any as S.Schema; + +export interface BadgeUploadResponse { + /** Whether the upload succeeded. */ + isSuccessful: boolean; +} +export const BadgeUploadResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + isSuccessful: S.Boolean, + }), +).annotate({ + identifier: "BadgeUploadResponse", +}) as any as S.Schema; + +export interface UploadContractRequest { + /** The contract file to upload. Only PDF files are accepted. */ + file: string; + /** ISO 8601 date indicating when the contract was executed. */ + executedDate?: string; + /** ID of the customer trust account to associate with this contract. */ + accountId?: string; + /** Stable source-system identifier used to reject duplicate contract uploads; repeats return 409. Use the upstream document or record ID when available, such as the Microsoft Graph DriveItem ID for SharePoint or the Ironclad record ID for Ironclad. If there is no source system, generate and store a durable idempotency key. Maximum 256 characters. */ + externalId?: string; +} +export const UploadContractRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + file: S.String, + executedDate: S.optional(S.String), + accountId: S.optional(S.String), + externalId: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/contracts", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "UploadContractRequest", +}) as any as S.Schema; + +export interface UploadDocumentForSecurityReviewRequest { + vendorId: string; + securityReviewId: string; + file: string; + /** Type of the vendor document. */ + type: string; + /** The document's title. */ + title?: string; + /** The document's description. */ + description?: string; +} +export const UploadDocumentForSecurityReviewRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + securityReviewId: S.String.pipe(T.Label()), + file: S.String, + type: S.String, + title: S.optional(S.String), + description: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/vendors/{vendorId}/security-reviews/{securityReviewId}/documents", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "UploadDocumentForSecurityReviewRequest", +}) as any as S.Schema; + +export interface UploadDocumentToVendorRequest { + vendorId: string; + file: string; + /** Type of the vendor document. */ + type: string; + /** The document's title. */ + title?: string; + /** The document's description. */ + description?: string; +} +export const UploadDocumentToVendorRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendorId: S.String.pipe(T.Label()), + file: S.String, + type: S.String, + title: S.optional(S.String), + description: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/vendors/{vendorId}/documents", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "UploadDocumentToVendorRequest", +}) as any as S.Schema; + +export interface UploadFileForDocumentRequest { + documentId: string; + file: string; + /** Date indicating when the document is effective from. */ + effectiveAtDate?: string; + /** Description of the uploaded document. */ + description?: string; +} +export const UploadFileForDocumentRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + documentId: S.String.pipe(T.Label()), + file: S.String, + effectiveAtDate: S.optional(S.String), + description: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/documents/{documentId}/uploads", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "UploadFileForDocumentRequest", +}) as any as S.Schema; + +export interface UploadTrustCenterFaviconRequest { + slugId: string; + favicon: string; +} +export const UploadTrustCenterFaviconRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + favicon: S.String, + }).pipe( + T.Http({ + method: "POST", + uri: "/trust-centers/{slugId}/favicon", + code: 200, + contentType: "multipart", + }), + ), +).annotate({ + identifier: "UploadTrustCenterFaviconRequest", +}) as any as S.Schema; + +/** Response returned after a favicon upload. */ +export interface UploadFaviconResponse { + /** Whether the favicon was successfully uploaded. */ + isSuccessful: boolean; +} +export const UploadFaviconResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({ + isSuccessful: S.Boolean, + }), +).annotate({ + identifier: "UploadFaviconResponse", +}) as any as S.Schema; + +/** Group IDs to set for the subscriber. The subscriber will be removed from any groups not included in this list. */ +export type UpsertGroupsForTrustCenterSubscriberRequestGroupIdsList = + Array; +export const UpsertGroupsForTrustCenterSubscriberRequestGroupIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface UpsertGroupsForTrustCenterSubscriberRequest { + slugId: string; + subscriberId: string; + /** Group IDs to set for the subscriber. The subscriber will be removed from any groups not included in this list. */ + groupIds: UpsertGroupsForTrustCenterSubscriberRequestGroupIdsList; +} +export const UpsertGroupsForTrustCenterSubscriberRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + subscriberId: S.String.pipe(T.Label()), + groupIds: UpsertGroupsForTrustCenterSubscriberRequestGroupIdsList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/trust-centers/{slugId}/subscribers/{subscriberId}/groups", + code: 200, + }), + ), + ).annotate({ + identifier: "UpsertGroupsForTrustCenterSubscriberRequest", + }) as any as S.Schema; + +/** Ordered list of all control category IDs representing the desired order. */ +export type UpsertTrustCenterControlCategoriesOrderRequestOrderedCategoryIdsList = + Array; +export const UpsertTrustCenterControlCategoriesOrderRequestOrderedCategoryIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface UpsertTrustCenterControlCategoriesOrderRequest { + slugId: string; + /** Ordered list of all control category IDs representing the desired order. */ + orderedCategoryIds: UpsertTrustCenterControlCategoriesOrderRequestOrderedCategoryIdsList; +} +export const UpsertTrustCenterControlCategoriesOrderRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + orderedCategoryIds: + UpsertTrustCenterControlCategoriesOrderRequestOrderedCategoryIdsList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/trust-centers/{slugId}/control-categories/order", + code: 200, + }), + ), + ).annotate({ + identifier: "UpsertTrustCenterControlCategoriesOrderRequest", + }) as any as S.Schema; + +/** Ordered list of all control IDs in the category representing the desired order. */ +export type UpsertTrustCenterControlsInCategoryOrderRequestOrderedControlIdsList = + Array; +export const UpsertTrustCenterControlsInCategoryOrderRequestOrderedControlIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface UpsertTrustCenterControlsInCategoryOrderRequest { + slugId: string; + categoryId: string; + /** Ordered list of all control IDs in the category representing the desired order. */ + orderedControlIds: UpsertTrustCenterControlsInCategoryOrderRequestOrderedControlIdsList; +} +export const UpsertTrustCenterControlsInCategoryOrderRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + categoryId: S.String.pipe(T.Label()), + orderedControlIds: + UpsertTrustCenterControlsInCategoryOrderRequestOrderedControlIdsList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/trust-centers/{slugId}/control-categories/{categoryId}/controls/order", + code: 200, + }), + ), + ).annotate({ + identifier: "UpsertTrustCenterControlsInCategoryOrderRequest", + }) as any as S.Schema; + +export interface DataCollectedInputItem { + /** Name of the data type being disclosed. */ + dataCollected: string; + /** Status of the data collection disclosure. Must be one of "COLLECTED", "HIDDEN", or "NOT_COLLECTED". */ + status: DataCollectedStatus | (string & {}); +} +export const DataCollectedInputItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + dataCollected: S.String, + status: DataCollectedStatus, + }), +).annotate({ + identifier: "DataCollectedInputItem", +}) as any as S.Schema; + +/** List of data-collected disclosures to set on the Trust Center. */ +export type UpsertTrustCenterDataCollectedRequestDataCollectedList = + Array; +export const UpsertTrustCenterDataCollectedRequestDataCollectedList = + /*@__PURE__*/ S.Array( + DataCollectedInputItem, + ) as any as S.Schema; + +export interface UpsertTrustCenterDataCollectedRequest { + slugId: string; + /** List of data-collected disclosures to set on the Trust Center. */ + dataCollected: UpsertTrustCenterDataCollectedRequestDataCollectedList; + /** Custom heading for the data collected section. If null is passed in, unsets the current heading. */ + dataCollectedHeading?: string | null; +} +export const UpsertTrustCenterDataCollectedRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + slugId: S.String.pipe(T.Label()), + dataCollected: UpsertTrustCenterDataCollectedRequestDataCollectedList, + dataCollectedHeading: S.optional(S.NullOr(S.String)), + }).pipe( + T.Http({ + method: "PUT", + uri: "/trust-centers/{slugId}/data-collected", + code: 200, + }), + ), +).annotate({ + identifier: "UpsertTrustCenterDataCollectedRequest", +}) as any as S.Schema; + +/** Ordered list of all resource category IDs representing the desired order. */ +export type UpsertTrustCenterResourceCategoriesOrderRequestCategoryIdsList = + Array; +export const UpsertTrustCenterResourceCategoriesOrderRequestCategoryIdsList = + /*@__PURE__*/ S.Array( + S.String, + ) as any as S.Schema; + +export interface UpsertTrustCenterResourceCategoriesOrderRequest { + slugId: string; + /** Ordered list of all resource category IDs representing the desired order. */ + categoryIds: UpsertTrustCenterResourceCategoriesOrderRequestCategoryIdsList; +} +export const UpsertTrustCenterResourceCategoriesOrderRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + categoryIds: + UpsertTrustCenterResourceCategoriesOrderRequestCategoryIdsList, + }).pipe( + T.Http({ + method: "PUT", + uri: "/trust-centers/{slugId}/resource-categories/order", + code: 200, + }), + ), + ).annotate({ + identifier: "UpsertTrustCenterResourceCategoriesOrderRequest", + }) as any as S.Schema; + +export interface SetTrustCenterVideoItem { + /** Full video URL (e.g. "https://www.youtube.com/watch?v=dQw4w9WgXcQ" or "https://vimeo.com/123456"). Supported platforms: YouTube, Vimeo. */ + url: string; + /** Title of the video. */ + title: string; + /** Description of the video. */ + description?: string; +} +export const SetTrustCenterVideoItem = /*@__PURE__*/ S.suspend(() => + S.Struct({ + url: S.String, + title: S.String, + description: S.optional(S.String), + }), +).annotate({ + identifier: "SetTrustCenterVideoItem", +}) as any as S.Schema; + +/** The videos to display on the Trust Center. Replaces all existing videos. */ +export type UpsertTrustCenterVideosRequestVideosList = + Array; +export const UpsertTrustCenterVideosRequestVideosList = /*@__PURE__*/ S.Array( + SetTrustCenterVideoItem, +) as any as S.Schema; + +export interface UpsertTrustCenterVideosRequest { + slugId: string; + /** The videos to display on the Trust Center. Replaces all existing videos. */ + videos: UpsertTrustCenterVideosRequestVideosList; +} +export const UpsertTrustCenterVideosRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String.pipe(T.Label()), + videos: UpsertTrustCenterVideosRequestVideosList, + }).pipe( + T.Http({ method: "PUT", uri: "/trust-centers/{slugId}/videos", code: 200 }), + ), +).annotate({ + identifier: "UpsertTrustCenterVideosRequest", +}) as any as S.Schema; + +export interface TrustCenterVideo { + /** Canonical URL for the video. */ + url: string; + /** Title of the video. */ + title: string; + /** Description of the video. */ + description?: string | null; +} +export const TrustCenterVideo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + url: S.String, + title: S.String, + description: S.optional(S.NullOr(S.String)), + }), +).annotate({ + identifier: "TrustCenterVideo", +}) as any as S.Schema; + +export type ArrayResponseTrustCenterVideoResultsList = Array; +export const ArrayResponseTrustCenterVideoResultsList = /*@__PURE__*/ S.Array( + TrustCenterVideo, +) as any as S.Schema; + +export interface ArrayResponseTrustCenterVideo { + results: ArrayResponseTrustCenterVideoResultsList; +} +export const ArrayResponseTrustCenterVideo = /*@__PURE__*/ S.suspend(() => + S.Struct({ + results: ArrayResponseTrustCenterVideoResultsList, + }), +).annotate({ + identifier: "ArrayResponseTrustCenterVideo", +}) as any as S.Schema; + +export interface VerifyAnswerLibraryEntryRouteRequest { + id: string; + /** The expiration date in ISO 8601 format. If omitted, falls back to the configured review cadence. */ + expirationDate?: string; +} +export const VerifyAnswerLibraryEntryRouteRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String.pipe(T.Label()), + expirationDate: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/knowledge-base/answer-library/{id}/verify", + code: 200, + }), + ), +).annotate({ + identifier: "VerifyAnswerLibraryEntryRouteRequest", +}) as any as S.Schema; + +export interface VerifyKnowledgeBaseResourceRequest { + id: string; + /** The expiration date in ISO 8601 format. If omitted, falls back to the configured review cadence. */ + expirationDate?: string; +} +export const VerifyKnowledgeBaseResourceRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String.pipe(T.Label()), + expirationDate: S.optional(S.String), + }).pipe( + T.Http({ + method: "POST", + uri: "/knowledge-base/resources/{id}/verify", + code: 200, + }), + ), +).annotate({ + identifier: "VerifyKnowledgeBaseResourceRequest", +}) as any as S.Schema; + +export type VerifyKnowledgeBaseResourceResponse = + TrustKnowledgeBaseResourceOutput; +export const VerifyKnowledgeBaseResourceResponse = /*@__PURE__*/ S.suspend(() => + TrustKnowledgeBaseResourceOutput.pipe(T.RawResponseRoot()), +).annotate({ + identifier: "VerifyKnowledgeBaseResourceResponse", +}) as any as S.Schema; + +export type AcknowledgeSlaMissVulnerabilityRemediationsError = VantaOpError; +/** Acknowledge SLA miss Acknowledge an SLA miss for a vulnerability remediation. */ +export const acknowledgeSlaMissVulnerabilityRemediations: API.OperationMethod< + AcknowledgeSlaMissVulnerabilityRemediationsRequest, + BulkResponse, + AcknowledgeSlaMissVulnerabilityRemediationsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AcknowledgeSlaMissVulnerabilityRemediationsRequest, + output: BulkResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddControlFromLibraryError = VantaOpError; +/** Add control from Vanta library Add a control from the Vanta library to your organization's controls. */ +export const addControlFromLibrary: API.OperationMethod< + AddControlFromLibraryRequest, + Control, + AddControlFromLibraryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddControlFromLibraryRequest, + output: Control, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddControlToTrustCenterError = VantaOpError; +/** Add Trust Center control Adds a control to a Trust Center. */ +export const addControlToTrustCenter: API.OperationMethod< + AddControlToTrustCenterRequest, + TrustCenterControl, + AddControlToTrustCenterError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddControlToTrustCenterRequest, + output: TrustCenterControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddDiscoveredVendorToManagedError = VantaOpError; +/** Adds a discovered vendor to managed vendor by ID Add a discovered vendor to managed vendor. */ +export const addDiscoveredVendorToManaged: API.OperationMethod< + AddDiscoveredVendorToManagedRequest, + Vendor, + AddDiscoveredVendorToManagedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddDiscoveredVendorToManagedRequest, + output: Vendor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddDocumentToControlError = VantaOpError; +/** Add control to document mapping Add a document to a control. */ +export const addDocumentToControl: API.OperationMethod< + AddDocumentToControlRequest, + AddDocumentToControlResponse, + AddDocumentToControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddDocumentToControlRequest, + output: AddDocumentToControlResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddPeopleToGroupError = VantaOpError; +/** Add people to group Add people to a group. */ +export const addPeopleToGroup: API.OperationMethod< + AddPeopleToGroupRequest, + BulkResponse, + AddPeopleToGroupError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddPeopleToGroupRequest, + output: BulkResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddPersonToGroupError = VantaOpError; +/** Add person to a group Add a single person, by ID, to a group. */ +export const addPersonToGroup: API.OperationMethod< + AddPersonToGroupRequest, + Person, + AddPersonToGroupError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddPersonToGroupRequest, + output: Person, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddTagCategoryProductContextError = VantaOpError; +/** Enable tag category for product context Enables a tag category for a product context (e.g. document sharing, control sharing), making it available for scoping that context's shareable content. Idempotent: enabling an already-enabled category is a no-op. */ +export const addTagCategoryProductContext: API.OperationMethod< + AddTagCategoryProductContextRequest, + AddTagCategoryProductContextResponse, + AddTagCategoryProductContextError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddTagCategoryProductContextRequest, + output: AddTagCategoryProductContextResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddTestToControlError = VantaOpError; +/** Add control to test mapping Add a control to test mapping. */ +export const addTestToControl: API.OperationMethod< + AddTestToControlRequest, + AddTestToControlResponse, + AddTestToControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddTestToControlRequest, + output: AddTestToControlResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddTrustCenterControlCategoryError = VantaOpError; +/** Add Trust Center control category Adds a control category to a Trust Center. */ +export const addTrustCenterControlCategory: API.OperationMethod< + AddTrustCenterControlCategoryRequest, + TrustCenterControlCategory, + AddTrustCenterControlCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddTrustCenterControlCategoryRequest, + output: TrustCenterControlCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddTrustCenterFaqCategoryError = VantaOpError; +/** Add Trust Center FAQ category Adds an FAQ category to a Trust Center. */ +export const addTrustCenterFaqCategory: API.OperationMethod< + AddTrustCenterFaqCategoryRequest, + TrustCenterFaqCategory, + AddTrustCenterFaqCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddTrustCenterFaqCategoryRequest, + output: TrustCenterFaqCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddTrustCenterResourceCategoryError = VantaOpError; +/** Add Trust Center resource category Adds a resource category to a Trust Center. */ +export const addTrustCenterResourceCategory: API.OperationMethod< + AddTrustCenterResourceCategoryRequest, + TrustCenterResourceCategory, + AddTrustCenterResourceCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddTrustCenterResourceCategoryRequest, + output: TrustCenterResourceCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type AddTrustCenterViewerError = VantaOpError; +/** Add Trust Center viewer Adds a viewer and grants them access to a Trust Center. */ +export const addTrustCenterViewer: API.OperationMethod< + AddTrustCenterViewerRequest, + TrustCenterViewer, + AddTrustCenterViewerError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: AddTrustCenterViewerRequest, + output: TrustCenterViewer, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ApproveQuestionnaireError = VantaOpError; +/** Approve questionnaire Mark a questionnaire as `APPROVED` and optionally provide a `statusChangeMessage`. */ +export const approveQuestionnaire: API.OperationMethod< + ApproveQuestionnaireRequest, + CustomerTrustQuestionnaire, + ApproveQuestionnaireError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ApproveQuestionnaireRequest, + output: CustomerTrustQuestionnaire, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ApproveTrustCenterAccessRequestError = VantaOpError; +/** Approve Trust Center access request Approves an access request on a Trust Center. */ +export const approveTrustCenterAccessRequest: API.OperationMethod< + ApproveTrustCenterAccessRequestRequest, + ApproveTrustCenterAccessRequestResponse, + ApproveTrustCenterAccessRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ApproveTrustCenterAccessRequestRequest, + output: ApproveTrustCenterAccessRequestResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type BulkAddTagsToControlsError = VantaOpError; +/** Bulk add tags to Trust Center controls Adds tags to multiple controls on a Trust Center. Limited to 100 controls per request. */ +export const bulkAddTagsToControls: API.OperationMethod< + BulkAddTagsToControlsRequest, + ArrayResponseTrustCenterControl, + BulkAddTagsToControlsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: BulkAddTagsToControlsRequest, + output: ArrayResponseTrustCenterControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type BulkRemoveTagsFromControlsError = VantaOpError; +/** Bulk remove tags from Trust Center controls Removes tags from multiple controls on a Trust Center. Limited to 100 controls per request. */ +export const bulkRemoveTagsFromControls: API.OperationMethod< + BulkRemoveTagsFromControlsRequest, + ArrayResponseTrustCenterControl, + BulkRemoveTagsFromControlsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: BulkRemoveTagsFromControlsRequest, + output: ArrayResponseTrustCenterControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CancelRiskScenarioApprovalRequestError = VantaOpError; +/** Cancel risk scenario approval request Cancel approval request for a risk scenario. */ +export const cancelRiskScenarioApprovalRequest: API.OperationMethod< + CancelRiskScenarioApprovalRequestRequest, + RiskScenario, + CancelRiskScenarioApprovalRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CancelRiskScenarioApprovalRequestRequest, + output: RiskScenario, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ClearLeaveForPersonError = VantaOpError; +/** Remove leave information Remove leave information on a person. The person will become active in Vanta, and will be considered in certain tests related to personnel. */ +export const clearLeaveForPerson: API.OperationMethod< + ClearLeaveForPersonRequest, + Person, + ClearLeaveForPersonError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ClearLeaveForPersonRequest, + output: Person, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CompleteQuestionnaireError = VantaOpError; +/** Complete questionnaire Complete a questionnaire and optionally sync approved answers to the answer library. Transitions the questionnaire status to COMPLETE. If `shouldSyncApprovedToAnswerLibrary` is true (the default), approved answers are added to the answer library for future use. For non-English SPREADSHEET or DOCUMENT questionnaires, answer library sync will be ignored. */ +export const completeQuestionnaire: API.OperationMethod< + CompleteQuestionnaireRequest, + CustomerTrustQuestionnaire, + CompleteQuestionnaireError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CompleteQuestionnaireRequest, + output: CustomerTrustQuestionnaire, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateAnswerLibraryEntryError = VantaOpError; +/** Create Answer Library entry Create an Answer Library entry. */ +export const createAnswerLibraryEntry: API.OperationMethod< + CreateAnswerLibraryEntryRequest, + KnowledgeBaseAnswerLibraryEntryOutput, + CreateAnswerLibraryEntryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateAnswerLibraryEntryRequest, + output: KnowledgeBaseAnswerLibraryEntryOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateComplianceFrameworkError = VantaOpError; +/** Create Trust Center compliance framework Adds a compliance framework to a Trust Center. */ +export const createComplianceFramework: API.OperationMethod< + CreateComplianceFrameworkRequest, + TrustCenterComplianceFramework, + CreateComplianceFrameworkError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateComplianceFrameworkRequest, + output: TrustCenterComplianceFramework, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateCustomControlError = VantaOpError; +/** Create custom control Create a custom control. */ +export const createCustomControl: API.OperationMethod< + CreateCustomControlRequest, + Control, + CreateCustomControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateCustomControlRequest, + output: Control, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateCustomerTrustAccountError = VantaOpError; +/** Create customer trust account Create a new customer trust account. */ +export const createCustomerTrustAccount: API.OperationMethod< + CreateCustomerTrustAccountRequest, + CustomerTrustAccountVantaApi, + CreateCustomerTrustAccountError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateCustomerTrustAccountRequest, + output: CustomerTrustAccountVantaApi, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateDeletionRequestError = VantaOpError; +/** Create data deletion request Submit a Right to Be Forgotten (RTBF) data deletion request for the specified email address. */ +export const createDeletionRequest: API.OperationMethod< + CreateDeletionRequestRequest, + CreateDeletionRequestResponse, + CreateDeletionRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateDeletionRequestRequest, + output: CreateDeletionRequestResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateDocumentError = VantaOpError; +/** Create a custom document Create a custom document. */ +export const createDocument: API.OperationMethod< + CreateDocumentRequest, + Document, + CreateDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateDocumentRequest, + output: Document, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateDocumentResourceError = VantaOpError; +/** Create document resource Create a document (FILE-type) resource in the Trust Knowledge Base. Accepts the document as a multipart/form-data upload. Example: send `multipart/form-data` with a required `file` (e.g. PDF) and `title`; optional fields include `description`, `customerVisibility`, `downloadPermission`, `isUsedInQuestionnaires` ("true"/"false"), `expirationDate` (ISO 8601), `tags` (JSON array string), `categoryId`, and `ownerAssignment` (JSON object string). */ +export const createDocumentResource: API.OperationMethod< + CreateDocumentResourceRequest, + KnowledgeBaseDocumentResourceOutput, + CreateDocumentResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateDocumentResourceRequest, + output: KnowledgeBaseDocumentResourceOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateFileQuestionnaireError = VantaOpError; +/** Create file questionnaire Create a new file-based questionnaire from an uploaded file (.xlsx, .docx, .pdf). File type is inferred as `SPREADSHEET` or `DOCUMENT` based on the uploaded file. */ +export const createFileQuestionnaire: API.OperationMethod< + CreateFileQuestionnaireRequest, + CustomerTrustQuestionnaire, + CreateFileQuestionnaireError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateFileQuestionnaireRequest, + output: CustomerTrustQuestionnaire, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateGroupError = VantaOpError; +/** Create group Creates a group. */ +export const createGroup: API.OperationMethod< + CreateGroupRequest, + Group, + CreateGroupError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateGroupRequest, + output: Group, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateLinkForDocumentError = VantaOpError; +/** Create document link Create a link for a document. */ +export const createLinkForDocument: API.OperationMethod< + CreateLinkForDocumentRequest, + UploadedLink, + CreateLinkForDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateLinkForDocumentRequest, + output: UploadedLink, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateQuestionnaireExportError = VantaOpError; +/** Create questionnaire export Creates an asynchronous export job for a questionnaire. The export processes in the background and typically completes within a few minutes depending on questionnaire size. Subscribe to the `v1.questionnaire.export-completed` and `v1.questionnaire.export-failed` webhook events to be notified when an export completes or fails. Use the returned `id` with the "getQuestionnaireExport" endpoint to retrieve the download URL once the export completes. */ +export const createQuestionnaireExport: API.OperationMethod< + CreateQuestionnaireExportRequest, + CreateQuestionnaireExportResponse, + CreateQuestionnaireExportError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateQuestionnaireExportRequest, + output: CreateQuestionnaireExportResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateRiskScenarioError = VantaOpError; +/** Create risk scenario Create a new risk scenario. */ +export const createRiskScenario: API.OperationMethod< + CreateRiskScenarioRequest, + RiskScenario, + CreateRiskScenarioError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateRiskScenarioRequest, + output: RiskScenario, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateRiskScenarioControlError = VantaOpError; +/** Add a control to a risk scenario Associate a control with a risk scenario. Body: `{ controlId, controlType? }`. `controlType` is `TREATMENT_PLAN` for a control that is part of the risk's treatment plan; omit it (or pass `EXISTING`) to associate the control as a plain existing control. `controlId` may be a Vanta control shorthand, custom-control shorthand, or object ID; it resolves to a single canonical control before any write. Behavior on conflict with an existing association: - Same resolved control already associated with the same `controlType`: the request is a no-op and the existing relationship is returned (200). - Same resolved control associated with the other `controlType`: the request is rejected with a hint to use `PATCH` instead (422). */ +export const createRiskScenarioControl: API.OperationMethod< + CreateRiskScenarioControlRequest, + RiskScenarioControl, + CreateRiskScenarioControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateRiskScenarioControlRequest, + output: RiskScenarioControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateTrustCenterFaqError = VantaOpError; +/** Create Trust Center FAQ Adds an FAQ to a Trust Center. */ +export const createTrustCenterFaq: API.OperationMethod< + CreateTrustCenterFaqRequest, + TrustCenterFaq, + CreateTrustCenterFaqError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateTrustCenterFaqRequest, + output: TrustCenterFaq, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateTrustCenterResourceError = VantaOpError; +/** Create Trust Center document Adds a document to a Trust Center. */ +export const createTrustCenterResource: API.OperationMethod< + CreateTrustCenterResourceRequest, + TrustCenterResource, + CreateTrustCenterResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateTrustCenterResourceRequest, + output: TrustCenterResource, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateTrustCenterSubprocessorError = VantaOpError; +/** Create Trust Center subprocessor Adds a subprocessor to a Trust Center. */ +export const createTrustCenterSubprocessor: API.OperationMethod< + CreateTrustCenterSubprocessorRequest, + CreateTrustCenterSubprocessorResponse, + CreateTrustCenterSubprocessorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateTrustCenterSubprocessorRequest, + output: CreateTrustCenterSubprocessorResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateTrustCenterSubscriberError = VantaOpError; +/** Create Trust Center subscriber Adds a subscriber to a Trust Center. */ +export const createTrustCenterSubscriber: API.OperationMethod< + CreateTrustCenterSubscriberRequest, + TrustCenterSubscriber, + CreateTrustCenterSubscriberError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateTrustCenterSubscriberRequest, + output: TrustCenterSubscriber, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateTrustCenterSubscriberGroupError = VantaOpError; +/** Create Trust Center subscriber group Adds a subscriber group to a Trust Center. */ +export const createTrustCenterSubscriberGroup: API.OperationMethod< + CreateTrustCenterSubscriberGroupRequest, + TrustCenterSubscriberGroup, + CreateTrustCenterSubscriberGroupError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateTrustCenterSubscriberGroupRequest, + output: TrustCenterSubscriberGroup, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateTrustCenterUpdateError = VantaOpError; +/** Create Trust Center update Adds an update to a Trust Center. */ +export const createTrustCenterUpdate: API.OperationMethod< + CreateTrustCenterUpdateRequest, + TrustCenterUpdateAPIResponse, + CreateTrustCenterUpdateError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateTrustCenterUpdateRequest, + output: TrustCenterUpdateAPIResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateVendorError = VantaOpError; +/** Create a vendor Add vendor with metadata. */ +export const createVendor: API.OperationMethod< + CreateVendorRequest, + Vendor, + CreateVendorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateVendorRequest, + output: Vendor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateVendorFindingError = VantaOpError; +/** Add a vendor finding Add vendor finding. */ +export const createVendorFinding: API.OperationMethod< + CreateVendorFindingRequest, + VendorFinding, + CreateVendorFindingError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateVendorFindingRequest, + output: VendorFinding, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateWebpageResourceError = VantaOpError; +/** Create webpage resource Create a webpage (URL-type) resource in the Trust Knowledge Base. */ +export const createWebpageResource: API.OperationMethod< + CreateWebpageResourceRequest, + KnowledgeBaseWebpageResourceOutput, + CreateWebpageResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateWebpageResourceRequest, + output: KnowledgeBaseWebpageResourceOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type CreateWebsiteQuestionnaireError = VantaOpError; +/** Create website questionnaire Create a new website-based questionnaire from a portal URL. The portal URL is used to fetch questionnaire content from the target website. */ +export const createWebsiteQuestionnaire: API.OperationMethod< + CreateWebsiteQuestionnaireRequest, + CustomerTrustQuestionnaire, + CreateWebsiteQuestionnaireError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: CreateWebsiteQuestionnaireRequest, + output: CustomerTrustQuestionnaire, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeactivateTestEntityError = VantaOpError; +/** Deactivate test entity Deactivates a single test item (test entity). There may be a delay in the deactivation of the test entity until the next test run. Use the /vulnerabilities/deactivate endpoint for vulnerabilities. */ +export const deactivateTestEntity: API.OperationMethod< + DeactivateTestEntityRequest, + DeactivateTestEntityResponse, + DeactivateTestEntityError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeactivateTestEntityRequest, + output: DeactivateTestEntityResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeactivateVulnerabilitiesError = VantaOpError; +/** Deactivate vulnerability monitoring for a vulnerability Deactivate monitoring for select vulnerabilities. Vanta will not monitor a deactivated vulnerability until it is reactivated. */ +export const deactivateVulnerabilities: API.OperationMethod< + DeactivateVulnerabilitiesRequest, + BulkResponse, + DeactivateVulnerabilitiesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeactivateVulnerabilitiesRequest, + output: BulkResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteAnswerLibraryEntryRouteError = VantaOpError; +/** Delete Answer Library entry Delete an Answer Library entry. */ +export const deleteAnswerLibraryEntryRoute: API.OperationMethod< + DeleteAnswerLibraryEntryRouteRequest, + DeleteAnswerLibraryEntryRouteResponse, + DeleteAnswerLibraryEntryRouteError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteAnswerLibraryEntryRouteRequest, + output: DeleteAnswerLibraryEntryRouteResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteByIdError = VantaOpError; +/** Delete vendor by ID Deletes a vendor. */ +export const deleteById: API.OperationMethod< + DeleteByIdRequest, + DeleteByIdResponse, + DeleteByIdError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteByIdRequest, + output: DeleteByIdResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteComplianceFrameworkError = VantaOpError; +/** Delete Trust Center compliance framework Removes a compliance framework from a Trust Center. */ +export const deleteComplianceFramework: API.OperationMethod< + DeleteComplianceFrameworkRequest, + DeleteComplianceFrameworkResponse, + DeleteComplianceFrameworkError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteComplianceFrameworkRequest, + output: DeleteComplianceFrameworkResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteContractError = VantaOpError; +/** Delete contract Delete a contract by ID. */ +export const deleteContract: API.OperationMethod< + DeleteContractRequest, + DeleteContractResponse, + DeleteContractError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteContractRequest, + output: DeleteContractResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteControlError = VantaOpError; +/** Deactivates a control Deactivates a custom or Vanta control. */ +export const deleteControl: API.OperationMethod< + DeleteControlRequest, + DeleteControlResponse, + DeleteControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteControlRequest, + output: DeleteControlResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteCustomerTrustAccountError = VantaOpError; +/** Delete customer trust account Delete a customer trust account by ID. */ +export const deleteCustomerTrustAccount: API.OperationMethod< + DeleteCustomerTrustAccountRequest, + DeleteCustomerTrustAccountResponse, + DeleteCustomerTrustAccountError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteCustomerTrustAccountRequest, + output: DeleteCustomerTrustAccountResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteDocumentError = VantaOpError; +/** Delete document by ID Delete a document by ID. */ +export const deleteDocument: API.OperationMethod< + DeleteDocumentRequest, + DeleteDocumentResponse, + DeleteDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteDocumentRequest, + output: DeleteDocumentResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteDocumentForcontrolError = VantaOpError; +/** Remove control from document mapping Remove a document by ID from a control. */ +export const deleteDocumentForcontrol: API.OperationMethod< + DeleteDocumentForcontrolRequest, + DeleteDocumentForcontrolResponse, + DeleteDocumentForcontrolError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteDocumentForcontrolRequest, + output: DeleteDocumentForcontrolResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteFileForDocumentError = VantaOpError; +/** Delete file for a document Delete a file for a document. */ +export const deleteFileForDocument: API.OperationMethod< + DeleteFileForDocumentRequest, + DeleteFileForDocumentResponse, + DeleteFileForDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteFileForDocumentRequest, + output: DeleteFileForDocumentResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteFindingByIdError = VantaOpError; +/** Delete finding by ID Deletes a finding. */ +export const deleteFindingById: API.OperationMethod< + DeleteFindingByIdRequest, + DeleteFindingByIdResponse, + DeleteFindingByIdError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteFindingByIdRequest, + output: DeleteFindingByIdResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteKnowledgeBaseResourceError = VantaOpError; +/** Delete Knowledge Base resource Hard-delete a Knowledge Base resource (FILE or URL) by id. Tears down the row plus its associated state (uploaded document for FILE rows, Trust Center references, Oso facts, chunk-store entries) via . Returns 404 when the id is unknown in the calling token's domain. */ +export const deleteKnowledgeBaseResource: API.OperationMethod< + DeleteKnowledgeBaseResourceRequest, + DeleteKnowledgeBaseResourceResponse, + DeleteKnowledgeBaseResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteKnowledgeBaseResourceRequest, + output: DeleteKnowledgeBaseResourceResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteLinkForDocumentError = VantaOpError; +/** Remove document link Remove a link from a document. */ +export const deleteLinkForDocument: API.OperationMethod< + DeleteLinkForDocumentRequest, + DeleteLinkForDocumentResponse, + DeleteLinkForDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteLinkForDocumentRequest, + output: DeleteLinkForDocumentResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteQuestionnaireError = VantaOpError; +/** Delete questionnaire Delete a questionnaire by ID. */ +export const deleteQuestionnaire: API.OperationMethod< + DeleteQuestionnaireRequest, + DeleteQuestionnaireResponse, + DeleteQuestionnaireError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteQuestionnaireRequest, + output: DeleteQuestionnaireResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteRiskScenarioControlError = VantaOpError; +/** Remove a control from a risk scenario Remove a control from a risk scenario. Fully unlinks the control regardless of whether it is currently a `TREATMENT_PLAN` or an `EXISTING` control. To only drop the treatment-plan designation while keeping the control linked, use `PATCH { "controlType": "EXISTING" }` instead. Deleting an already-unlinked control is an idempotent no-op (204). */ +export const deleteRiskScenarioControl: API.OperationMethod< + DeleteRiskScenarioControlRequest, + DeleteRiskScenarioControlResponse, + DeleteRiskScenarioControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteRiskScenarioControlRequest, + output: DeleteRiskScenarioControlResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteSecurityReviewDocumentByIdError = VantaOpError; +/** Delete a security review document by ID Delete a security review document. */ +export const deleteSecurityReviewDocumentById: API.OperationMethod< + DeleteSecurityReviewDocumentByIdRequest, + DeleteSecurityReviewDocumentByIdResponse, + DeleteSecurityReviewDocumentByIdError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteSecurityReviewDocumentByIdRequest, + output: DeleteSecurityReviewDocumentByIdResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTestForControlError = VantaOpError; +/** Remove control from test mapping Remove a control from test mapping. */ +export const deleteTestForControl: API.OperationMethod< + DeleteTestForControlRequest, + DeleteTestForControlResponse, + DeleteTestForControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTestForControlRequest, + output: DeleteTestForControlResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTrustCenterControlError = VantaOpError; +/** Delete Trust Center control Removes a specific control from a Trust Center. This removes the control from all of the control categories that is in. */ +export const deleteTrustCenterControl: API.OperationMethod< + DeleteTrustCenterControlRequest, + DeleteTrustCenterControlResponse, + DeleteTrustCenterControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTrustCenterControlRequest, + output: DeleteTrustCenterControlResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTrustCenterControlCategoryError = VantaOpError; +/** Delete Trust Center control category Removes a control category from a Trust Center along with all of the controls in the category. */ +export const deleteTrustCenterControlCategory: API.OperationMethod< + DeleteTrustCenterControlCategoryRequest, + DeleteTrustCenterControlCategoryResponse, + DeleteTrustCenterControlCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTrustCenterControlCategoryRequest, + output: DeleteTrustCenterControlCategoryResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTrustCenterFaqError = VantaOpError; +/** Delete Trust Center FAQ Remove a specific FAQ from the Trust Center by ID. */ +export const deleteTrustCenterFaq: API.OperationMethod< + DeleteTrustCenterFaqRequest, + DeleteTrustCenterFaqResponse, + DeleteTrustCenterFaqError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTrustCenterFaqRequest, + output: DeleteTrustCenterFaqResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTrustCenterFaqCategoryError = VantaOpError; +/** Delete Trust Center FAQ category Removes an FAQ category from a Trust Center. FAQs in the deleted category are moved to uncategorized. */ +export const deleteTrustCenterFaqCategory: API.OperationMethod< + DeleteTrustCenterFaqCategoryRequest, + DeleteTrustCenterFaqCategoryResponse, + DeleteTrustCenterFaqCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTrustCenterFaqCategoryRequest, + output: DeleteTrustCenterFaqCategoryResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTrustCenterResourceError = VantaOpError; +/** Delete Trust Center document Removes a specific document from a Trust Center. */ +export const deleteTrustCenterResource: API.OperationMethod< + DeleteTrustCenterResourceRequest, + DeleteTrustCenterResourceResponse, + DeleteTrustCenterResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTrustCenterResourceRequest, + output: DeleteTrustCenterResourceResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTrustCenterResourceCategoryError = VantaOpError; +/** Delete Trust Center resource category Removes a resource category from a Trust Center. Resources in the deleted category are moved to uncategorized. */ +export const deleteTrustCenterResourceCategory: API.OperationMethod< + DeleteTrustCenterResourceCategoryRequest, + DeleteTrustCenterResourceCategoryResponse, + DeleteTrustCenterResourceCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTrustCenterResourceCategoryRequest, + output: DeleteTrustCenterResourceCategoryResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTrustCenterSubprocessorError = VantaOpError; +/** Delete Trust Center subprocessor Removes a subprocessor from a Trust Center. */ +export const deleteTrustCenterSubprocessor: API.OperationMethod< + DeleteTrustCenterSubprocessorRequest, + DeleteTrustCenterSubprocessorResponse, + DeleteTrustCenterSubprocessorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTrustCenterSubprocessorRequest, + output: DeleteTrustCenterSubprocessorResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTrustCenterSubscriberError = VantaOpError; +/** Delete Trust Center subscriber Removes a subscriber from a Trust Center. */ +export const deleteTrustCenterSubscriber: API.OperationMethod< + DeleteTrustCenterSubscriberRequest, + DeleteTrustCenterSubscriberResponse, + DeleteTrustCenterSubscriberError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTrustCenterSubscriberRequest, + output: DeleteTrustCenterSubscriberResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTrustCenterSubscriberGroupError = VantaOpError; +/** Delete Trust Center subscriber group Removes a subscriber group from a Trust Center. */ +export const deleteTrustCenterSubscriberGroup: API.OperationMethod< + DeleteTrustCenterSubscriberGroupRequest, + DeleteTrustCenterSubscriberGroupResponse, + DeleteTrustCenterSubscriberGroupError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTrustCenterSubscriberGroupRequest, + output: DeleteTrustCenterSubscriberGroupResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DeleteTrustCenterUpdateError = VantaOpError; +/** Delete Trust Center update Removes an update from a Trust Center. */ +export const deleteTrustCenterUpdate: API.OperationMethod< + DeleteTrustCenterUpdateRequest, + DeleteTrustCenterUpdateResponse, + DeleteTrustCenterUpdateError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DeleteTrustCenterUpdateRequest, + output: DeleteTrustCenterUpdateResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type DenyTrustCenterAccessRequestError = VantaOpError; +/** Deny Trust Center access request Denies an access request on a Trust Center. */ +export const denyTrustCenterAccessRequest: API.OperationMethod< + DenyTrustCenterAccessRequestRequest, + DenyTrustCenterAccessRequestResponse, + DenyTrustCenterAccessRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: DenyTrustCenterAccessRequestRequest, + output: DenyTrustCenterAccessRequestResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetAnswerLibraryEntryError = VantaOpError; +/** Get Answer Library entry Get an Answer Library entry. */ +export const getAnswerLibraryEntry: API.OperationMethod< + GetAnswerLibraryEntryRequest, + KnowledgeBaseAnswerLibraryEntryOutput, + GetAnswerLibraryEntryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetAnswerLibraryEntryRequest, + output: KnowledgeBaseAnswerLibraryEntryOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetAssessmentByIdError = VantaOpError; +/** Get assessment by ID Returns a single assessment for a vendor. */ +export const getAssessmentById: API.OperationMethod< + GetAssessmentByIdRequest, + VendorAssessment, + GetAssessmentByIdError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetAssessmentByIdRequest, + output: VendorAssessment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetAssessmentsByVendorIdError = VantaOpError; +/** List assessments by vendor ID Returns a vendor's assessments across all assessment types. */ +export const getAssessmentsByVendorId: API.OperationMethod< + GetAssessmentsByVendorIdRequest, + PaginatedResponseVendorAssessment, + GetAssessmentsByVendorIdError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetAssessmentsByVendorIdRequest, + output: PaginatedResponseVendorAssessment, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetChatbotConversationMessagesError = VantaOpError; +/** Get Trust Center chatbot conversation messages Gets the messages for a specific chatbot conversation on a Trust Center. */ +export const getChatbotConversationMessages: API.OperationMethod< + GetChatbotConversationMessagesRequest, + ArrayResponseTrustCenterChatbotMessage, + GetChatbotConversationMessagesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetChatbotConversationMessagesRequest, + output: ArrayResponseTrustCenterChatbotMessage, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetConnectedIntegrationError = VantaOpError; +/** Get a connected integration Gets details for a specific integration by connection ID. */ +export const getConnectedIntegration: API.OperationMethod< + GetConnectedIntegrationRequest, + Integration, + GetConnectedIntegrationError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetConnectedIntegrationRequest, + output: Integration, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetContractError = VantaOpError; +/** Get contract Get a contract by ID. */ +export const getContract: API.OperationMethod< + GetContractRequest, + Contract, + GetContractError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetContractRequest, + output: Contract, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetControlError = VantaOpError; +/** Get control by an ID Get a control by an ID. */ +export const getControl: API.OperationMethod< + GetControlRequest, + ControlDetail, + GetControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetControlRequest, + output: ControlDetail, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetCustomerTrustAccountError = VantaOpError; +/** Get customer trust account Get a specific customer trust account by ID. */ +export const getCustomerTrustAccount: API.OperationMethod< + GetCustomerTrustAccountRequest, + CustomerTrustAccountVantaApi, + GetCustomerTrustAccountError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetCustomerTrustAccountRequest, + output: CustomerTrustAccountVantaApi, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetDocumentError = VantaOpError; +/** Get document by ID Get a document by ID. */ +export const getDocument: API.OperationMethod< + GetDocumentRequest, + DocumentDetail, + GetDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetDocumentRequest, + output: DocumentDetail, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetFrameworkError = VantaOpError; +/** Get framework by ID Get a framework by ID. */ +export const getFramework: API.OperationMethod< + GetFrameworkRequest, + FrameworkDetail, + GetFrameworkError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetFrameworkRequest, + output: FrameworkDetail, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetGroupError = VantaOpError; +/** Get group by ID Get a group by ID. */ +export const getGroup: API.OperationMethod< + GetGroupRequest, + Group, + GetGroupError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetGroupRequest, + output: Group, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetGroupMembersError = VantaOpError; +/** List people in a group List people in a group. */ +export const getGroupMembers: API.OperationMethod< + GetGroupMembersRequest, + GetGroupMembersResponse, + GetGroupMembersError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetGroupMembersRequest, + output: GetGroupMembersResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetIssueError = VantaOpError; +/** Get issue by ID Get the details of an issue by its ID. */ +export const getIssue: API.OperationMethod< + GetIssueRequest, + GetIssueResponse, + GetIssueError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetIssueRequest, + output: GetIssueResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetKnowledgeBaseResourceError = VantaOpError; +/** Get Knowledge Base resource Fetch a single Knowledge Base resource (FILE or URL) by id. Returns the same `type`-discriminated union as the list endpoint, so callers can branch on `type` without knowing the kind ahead of time. Returns 404 when the resource does not exist in the domain or — for FILE rows — when the underlying uploaded document has been deleted. */ +export const getKnowledgeBaseResource: API.OperationMethod< + GetKnowledgeBaseResourceRequest, + GetKnowledgeBaseResourceResponse, + GetKnowledgeBaseResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetKnowledgeBaseResourceRequest, + output: GetKnowledgeBaseResourceResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetMonitoredComputerError = VantaOpError; +/** Get monitored computer by ID Returns a monitored computer by ID. */ +export const getMonitoredComputer: API.OperationMethod< + GetMonitoredComputerRequest, + MonitoredComputer, + GetMonitoredComputerError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetMonitoredComputerRequest, + output: MonitoredComputer, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetPersonError = VantaOpError; +/** Get person by ID Returns a person by ID. */ +export const getPerson: API.OperationMethod< + GetPersonRequest, + Person, + GetPersonError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetPersonRequest, + output: Person, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetPolicyError = VantaOpError; +/** Get policy by ID Gets a policy by ID. Policy IDs can be found in Vanta in URL bar after /policies/. */ +export const getPolicy: API.OperationMethod< + GetPolicyRequest, + Policy, + GetPolicyError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetPolicyRequest, + output: Policy, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetQuestionnaireError = VantaOpError; +/** Get questionnaire by ID Retrieve a questionnaire by ID. */ +export const getQuestionnaire: API.OperationMethod< + GetQuestionnaireRequest, + CustomerTrustQuestionnaire, + GetQuestionnaireError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetQuestionnaireRequest, + output: CustomerTrustQuestionnaire, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetQuestionnaireExportError = VantaOpError; +/** Get questionnaire export status Retrieves the current status and result of a questionnaire export using the id received from either the `createQuestionnaireExport` endpoint or the `v1.questionnaire.export-completed` webhook payload. This endpoint utilizes a dynamic response schema that changes based on the value of the status field: - pending: The export is currently in the queue or processing. Only base metadata is returned. - completed: The export finished successfully. The response expands to include completedAt and a downloadUrl. This pre-signed URL is valid for 24 hours; if it expires, simply call this endpoint again to retrieve a fresh, active link. - failed: The process encountered an error. The response expands to include failedAt and an errorMessage detailing the reason for failure. Developers should first check the status string before attempting to access result-specific fields like downloadUrl or errorMessage. */ +export const getQuestionnaireExport: API.OperationMethod< + GetQuestionnaireExportRequest, + CustomerTrustExportStatusResponse, + GetQuestionnaireExportError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetQuestionnaireExportRequest, + output: CustomerTrustExportStatusResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetQuestionnaireResponseError = VantaOpError; +/** Get questionnaire response Retrieve a single questionnaire response. */ +export const getQuestionnaireResponse: API.OperationMethod< + GetQuestionnaireResponseRequest, + QuestionnaireResponseWithoutViewerPermissions, + GetQuestionnaireResponseError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetQuestionnaireResponseRequest, + output: QuestionnaireResponseWithoutViewerPermissions, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetResourceError = VantaOpError; +/** Get resource by ID Gets resource by its ID. */ +export const getResource: API.OperationMethod< + GetResourceRequest, + GetResourceResponse, + GetResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetResourceRequest, + output: GetResourceResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetResourceKindDetailsError = VantaOpError; +/** Get details for resource kind Gets details for a specific resource type (kind) such as S3Bucket or CloudwatchLogGroup. */ +export const getResourceKindDetails: API.OperationMethod< + GetResourceKindDetailsRequest, + ResourceKindDetails, + GetResourceKindDetailsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetResourceKindDetailsRequest, + output: ResourceKindDetails, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetRiskScenarioError = VantaOpError; +/** Get risk scenario by ID Get a risk scenario by ID (can be the Risk ID or the object ID). */ +export const getRiskScenario: API.OperationMethod< + GetRiskScenarioRequest, + RiskScenario, + GetRiskScenarioError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetRiskScenarioRequest, + output: RiskScenario, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetSecurityReviewDocumentsError = VantaOpError; +/** List security review documents Lists a security review's documents. */ +export const getSecurityReviewDocuments: API.OperationMethod< + GetSecurityReviewDocumentsRequest, + PaginatedResponseVendorDocument, + GetSecurityReviewDocumentsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetSecurityReviewDocumentsRequest, + output: PaginatedResponseVendorDocument, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetSecurityReviewsByIdError = VantaOpError; +/** Get security review by ID Returns a security review. */ +export const getSecurityReviewsById: API.OperationMethod< + GetSecurityReviewsByIdRequest, + SecurityReview, + GetSecurityReviewsByIdError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetSecurityReviewsByIdRequest, + output: SecurityReview, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetSecurityReviewsByVendorIdError = VantaOpError; +/** List security reviews by vendor ID Returns a vendor's security reviews. */ +export const getSecurityReviewsByVendorId: API.OperationMethod< + GetSecurityReviewsByVendorIdRequest, + PaginatedResponseSecurityReview, + GetSecurityReviewsByVendorIdError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetSecurityReviewsByVendorIdRequest, + output: PaginatedResponseSecurityReview, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTagsForCategoryError = VantaOpError; +/** Get tags for category Retrieve a tag category and its associated tags by category ID. */ +export const getTagsForCategory: API.OperationMethod< + GetTagsForCategoryRequest, + TagCategoryWithTags, + GetTagsForCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTagsForCategoryRequest, + output: TagCategoryWithTags, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTestError = VantaOpError; +/** Get test by ID Gets a test by ID. Test IDs can be found in Vanta in URL bar after /tests/. */ +export const getTest: API.OperationMethod< + GetTestRequest, + Test, + GetTestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTestRequest, + output: Test, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTestEntitiesError = VantaOpError; +/** Get test entities by test ID Gets a list of tested items (entities) for a test by test ID. An entity is a tested item that can have its own outcome. For example, for a test that makes sure that all S3 buckets are versioned, an individual S3 bucket would be an entity. */ +export const getTestEntities: API.OperationMethod< + GetTestEntitiesRequest, + PaginatedResponseTestResourceEntity, + GetTestEntitiesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTestEntitiesRequest, + output: PaginatedResponseTestResourceEntity, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterError = VantaOpError; +/** Get Trust Center Gets a Trust Center by slug ID. */ +export const getTrustCenter: API.OperationMethod< + GetTrustCenterRequest, + TrustCenter, + GetTrustCenterError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterRequest, + output: TrustCenter, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterAccessRequestError = VantaOpError; +/** Get Trust Center access request Gets a specific access request for a Trust Center. */ +export const getTrustCenterAccessRequest: API.OperationMethod< + GetTrustCenterAccessRequestRequest, + TrustCenterAccessRequest, + GetTrustCenterAccessRequestError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterAccessRequestRequest, + output: TrustCenterAccessRequest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterControlError = VantaOpError; +/** Get Trust Center control Gets a specific control on a Trust Center. */ +export const getTrustCenterControl: API.OperationMethod< + GetTrustCenterControlRequest, + TrustCenterControl, + GetTrustCenterControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterControlRequest, + output: TrustCenterControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterControlCategoriesError = VantaOpError; +/** List Trust Center control categories Gets a list of control categories on a Trust Center. */ +export const getTrustCenterControlCategories: API.OperationMethod< + GetTrustCenterControlCategoriesRequest, + ArrayResponseTrustCenterControlCategory, + GetTrustCenterControlCategoriesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterControlCategoriesRequest, + output: ArrayResponseTrustCenterControlCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterControlCategoryError = VantaOpError; +/** Get Trust Center control category Gets a specific control category on a Trust Center. */ +export const getTrustCenterControlCategory: API.OperationMethod< + GetTrustCenterControlCategoryRequest, + TrustCenterControlCategory, + GetTrustCenterControlCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterControlCategoryRequest, + output: TrustCenterControlCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterFaqError = VantaOpError; +/** Get Trust Center FAQ Gets a specific FAQ on the Trust Center by ID. */ +export const getTrustCenterFaq: API.OperationMethod< + GetTrustCenterFaqRequest, + TrustCenterFaq, + GetTrustCenterFaqError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterFaqRequest, + output: TrustCenterFaq, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterResourceError = VantaOpError; +/** Get Trust Center document Gets a specific document on a Trust Center. */ +export const getTrustCenterResource: API.OperationMethod< + GetTrustCenterResourceRequest, + TrustCenterResource, + GetTrustCenterResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterResourceRequest, + output: TrustCenterResource, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterResourceMediaError = VantaOpError; +/** Get uploaded media for Trust Center document Gets the actual given uploaded document for a Trust Center. */ +export const getTrustCenterResourceMedia: API.OperationMethod< + GetTrustCenterResourceMediaRequest, + NodeJSReadableStream, + GetTrustCenterResourceMediaError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterResourceMediaRequest, + output: NodeJSReadableStream, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterSubprocessorError = VantaOpError; +/** Get Trust Center subprocessor Gets a specific subprocessor on a Trust Center. */ +export const getTrustCenterSubprocessor: API.OperationMethod< + GetTrustCenterSubprocessorRequest, + TrustCenterSubprocessor, + GetTrustCenterSubprocessorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterSubprocessorRequest, + output: TrustCenterSubprocessor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterSubscriberError = VantaOpError; +/** Get Trust Center subscriber Gets a specific subscriber on a Trust Center. */ +export const getTrustCenterSubscriber: API.OperationMethod< + GetTrustCenterSubscriberRequest, + TrustCenterSubscriber, + GetTrustCenterSubscriberError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterSubscriberRequest, + output: TrustCenterSubscriber, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterSubscriberGroupError = VantaOpError; +/** Get Trust Center subscriber group Get a subscriber group by ID. */ +export const getTrustCenterSubscriberGroup: API.OperationMethod< + GetTrustCenterSubscriberGroupRequest, + TrustCenterSubscriberGroup, + GetTrustCenterSubscriberGroupError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterSubscriberGroupRequest, + output: TrustCenterSubscriberGroup, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterUpdateError = VantaOpError; +/** Get Trust Center update Gets a specific update on a Trust Center. */ +export const getTrustCenterUpdate: API.OperationMethod< + GetTrustCenterUpdateRequest, + TrustCenterUpdateAPIResponse, + GetTrustCenterUpdateError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterUpdateRequest, + output: TrustCenterUpdateAPIResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetTrustCenterViewerError = VantaOpError; +/** Get Trust Center viewer Gets a specific viewer for a Trust Center. */ +export const getTrustCenterViewer: API.OperationMethod< + GetTrustCenterViewerRequest, + TrustCenterViewer, + GetTrustCenterViewerError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetTrustCenterViewerRequest, + output: TrustCenterViewer, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetUploadedfileMediaError = VantaOpError; +/** Download file for document Download a file from a document. */ +export const getUploadedfileMedia: API.OperationMethod< + GetUploadedfileMediaRequest, + NodeJSReadableStream, + GetUploadedfileMediaError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetUploadedfileMediaRequest, + output: NodeJSReadableStream, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetUserError = VantaOpError; +/** Get user by ID Returns a user by ID. */ +export const getUser: API.OperationMethod< + GetUserRequest, + User, + GetUserError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetUserRequest, + output: User, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetVendorError = VantaOpError; +/** Get vendor by ID Get a vendor. */ +export const getVendor: API.OperationMethod< + GetVendorRequest, + Vendor, + GetVendorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetVendorRequest, + output: Vendor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetVendorAssessmentTypeByIdError = VantaOpError; +/** Get assessment type by ID Gets an assessment type by ID. */ +export const getVendorAssessmentTypeById: API.OperationMethod< + GetVendorAssessmentTypeByIdRequest, + VendorAssessmentType, + GetVendorAssessmentTypeByIdError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetVendorAssessmentTypeByIdRequest, + output: VendorAssessmentType, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetVulnerabilityError = VantaOpError; +/** Get vulnerability by ID Gets a vulnerability by an ID. */ +export const getVulnerability: API.OperationMethod< + GetVulnerabilityRequest, + Vulnerability, + GetVulnerabilityError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetVulnerabilityRequest, + output: Vulnerability, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type GetVulnerableAssetError = VantaOpError; +/** Get vulnerable asset by ID Gets a vulnerable asset by ID. */ +export const getVulnerableAsset: API.OperationMethod< + GetVulnerableAssetRequest, + VulnerableAsset, + GetVulnerableAssetError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: GetVulnerableAssetRequest, + output: VulnerableAsset, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ImportIdpGroupsError = VantaOpError; +/** Import IdP groups Imports groups from an identity provider. */ +export const importIdpGroups: API.OperationMethod< + ImportIdpGroupsRequest, + ImportIdpGroupsResponse, + ImportIdpGroupsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ImportIdpGroupsRequest, + output: ImportIdpGroupsResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListError = VantaOpError; +/** List issues List issues on a domain (paginated). Returns a paginated list of issues that the authenticated app has permission to view, optionally filtered and sorted. */ +export const list: API.OperationMethod< + ListRequest, + PaginatedResponseIssue, + ListError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListRequest, + output: PaginatedResponseIssue, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAnswerLibraryEntriesError = VantaOpError; +/** List Answer Library entries List Answer Library entries. Supports full-text search, tag filtering (OR across the given tags), and date-range filters on last-updated and expiration. Entries are returned most-recently-updated first. */ +export const listAnswerLibraryEntries: API.OperationMethod< + ListAnswerLibraryEntriesRequest, + PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutput, + ListAnswerLibraryEntriesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAnswerLibraryEntriesRequest, + output: PaginatedResponseKnowledgeBaseAnswerLibraryEntryOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListAssignableUsersError = VantaOpError; +/** List assignable users List users who can be assigned as owner or approver on a questionnaire. When a role is specified, results are filtered to users with that role's required permission. When omitted, users assignable to either role are returned. Results can optionally be narrowed by a search string. */ +export const listAssignableUsers: API.OperationMethod< + ListAssignableUsersRequest, + QuestionnaireAssignableUsersResponse, + ListAssignableUsersError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListAssignableUsersRequest, + output: QuestionnaireAssignableUsersResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListChatbotConversationsError = VantaOpError; +/** List Trust Center chatbot conversations Gets a paginated list of chatbot conversations on a Trust Center. */ +export const listChatbotConversations: API.OperationMethod< + ListChatbotConversationsRequest, + PaginatedResponseTrustCenterChatbotConversation, + ListChatbotConversationsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListChatbotConversationsRequest, + output: PaginatedResponseTrustCenterChatbotConversation, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListComplianceFrameworksError = VantaOpError; +/** List Trust Center compliance frameworks Gets the list of compliance frameworks on a Trust Center. */ +export const listComplianceFrameworks: API.OperationMethod< + ListComplianceFrameworksRequest, + ArrayResponseTrustCenterComplianceFramework, + ListComplianceFrameworksError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListComplianceFrameworksRequest, + output: ArrayResponseTrustCenterComplianceFramework, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListConnectedIntegrationsError = VantaOpError; +/** List connected integrations Lists all integrations connected to a Vanta instance. */ +export const listConnectedIntegrations: API.OperationMethod< + ListConnectedIntegrationsRequest, + PaginatedResponseIntegration, + ListConnectedIntegrationsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListConnectedIntegrationsRequest, + output: PaginatedResponseIntegration, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListContractsError = VantaOpError; +/** List contracts List contracts, paginated. */ +export const listContracts: API.OperationMethod< + ListContractsRequest, + PaginatedResponseContract, + ListContractsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListContractsRequest, + output: PaginatedResponseContract, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListControlsError = VantaOpError; +/** List controls List controls. */ +export const listControls: API.OperationMethod< + ListControlsRequest, + PaginatedResponseControl, + ListControlsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListControlsRequest, + output: PaginatedResponseControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListControlsForDocumentError = VantaOpError; +/** List document's controls List a document's associated controls. */ +export const listControlsForDocument: API.OperationMethod< + ListControlsForDocumentRequest, + PaginatedResponseControl, + ListControlsForDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListControlsForDocumentRequest, + output: PaginatedResponseControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListControlsForFrameworkError = VantaOpError; +/** List a framework's controls List a framework's controls. */ +export const listControlsForFramework: API.OperationMethod< + ListControlsForFrameworkRequest, + PaginatedResponseControl, + ListControlsForFrameworkError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListControlsForFrameworkRequest, + output: PaginatedResponseControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListCustomerTrustAccountsError = VantaOpError; +/** List customer trust accounts List customer trust accounts with pagination. */ +export const listCustomerTrustAccounts: API.OperationMethod< + ListCustomerTrustAccountsRequest, + PaginatedResponseCustomerTrustAccountVantaApi, + ListCustomerTrustAccountsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListCustomerTrustAccountsRequest, + output: PaginatedResponseCustomerTrustAccountVantaApi, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListDeactivatedControlsError = VantaOpError; +/** List deactivated controls List deactivated Vanta controls (previously known as the controls library). */ +export const listDeactivatedControls: API.OperationMethod< + ListDeactivatedControlsRequest, + PaginatedResponseControl, + ListDeactivatedControlsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListDeactivatedControlsRequest, + output: PaginatedResponseControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListDiscoveredVendorAccountsError = VantaOpError; +/** List of discovered vendor accounts List of discovered vendor accounts. */ +export const listDiscoveredVendorAccounts: API.OperationMethod< + ListDiscoveredVendorAccountsRequest, + PaginatedResponseDiscoveredVendorAccount, + ListDiscoveredVendorAccountsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListDiscoveredVendorAccountsRequest, + output: PaginatedResponseDiscoveredVendorAccount, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListDiscoveredVendorsError = VantaOpError; +/** List discovered vendors List discovered vendors. */ +export const listDiscoveredVendors: API.OperationMethod< + ListDiscoveredVendorsRequest, + PaginatedResponseDiscoveredVendor, + ListDiscoveredVendorsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListDiscoveredVendorsRequest, + output: PaginatedResponseDiscoveredVendor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListDocumentsError = VantaOpError; +/** List documents List documents. */ +export const listDocuments: API.OperationMethod< + ListDocumentsRequest, + PaginatedResponseDocument, + ListDocumentsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListDocumentsRequest, + output: PaginatedResponseDocument, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListDocumentsForControlError = VantaOpError; +/** List a control's documents List a control's documents. */ +export const listDocumentsForControl: API.OperationMethod< + ListDocumentsForControlRequest, + PaginatedResponseDocument, + ListDocumentsForControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListDocumentsForControlRequest, + output: PaginatedResponseDocument, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListEventLogsError = VantaOpError; +/** List event logs List event logs. See the [event log reference](/reference/manage-vanta/event-log-reference) for an inexhaustive list of `actor.type`, `action`, and `targets[].type` values. */ +export const listEventLogs: API.OperationMethod< + ListEventLogsRequest, + PaginatedResponseEventLog, + ListEventLogsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListEventLogsRequest, + output: PaginatedResponseEventLog, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListFilesForDocumentError = VantaOpError; +/** List document's uploads List the uploaded files for a document. */ +export const listFilesForDocument: API.OperationMethod< + ListFilesForDocumentRequest, + PaginatedResponseUploadedFileT, + ListFilesForDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListFilesForDocumentRequest, + output: PaginatedResponseUploadedFileT, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListFrameworksError = VantaOpError; +/** List available frameworks Lists available frameworks. */ +export const listFrameworks: API.OperationMethod< + ListFrameworksRequest, + PaginatedResponseFramework, + ListFrameworksError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListFrameworksRequest, + output: PaginatedResponseFramework, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListImportableIdpGroupsError = VantaOpError; +/** List importable IdP groups Lists IdP groups that are available to import. */ +export const listImportableIdpGroups: API.OperationMethod< + ListImportableIdpGroupsRequest, + PaginatedImportableIdpGroupResponse, + ListImportableIdpGroupsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListImportableIdpGroupsRequest, + output: PaginatedImportableIdpGroupResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListKnowledgeBaseResourcesError = VantaOpError; +/** List Knowledge Base resources List Knowledge Base resources (documents and webpages) in a single paginated response. Each entry is a discriminated union on `type` — "FILE" entries carry a `fileUrl` (presigned S3 URL, valid for one hour), "URL" entries carry the resource's `url` and `includeSubPages`. Supports full-text search, type filtering, tag filtering (OR within a category, AND across categories), and date-range filters on last-updated and expiration. Resources are returned most-recently-updated first. */ +export const listKnowledgeBaseResources: API.OperationMethod< + ListKnowledgeBaseResourcesRequest, + PaginatedResponseTrustKnowledgeBaseResourceOutput, + ListKnowledgeBaseResourcesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListKnowledgeBaseResourcesRequest, + output: PaginatedResponseTrustKnowledgeBaseResourceOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListLinksForDocumentError = VantaOpError; +/** List document's links List the uploaded links for a document. */ +export const listLinksForDocument: API.OperationMethod< + ListLinksForDocumentRequest, + PaginatedResponseUploadedLink, + ListLinksForDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListLinksForDocumentRequest, + output: PaginatedResponseUploadedLink, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListMonitoredComputersError = VantaOpError; +/** List monitored computers Returns a list of computers monitored by an MDM (with an integration built by Vanta) or by Vanta Device Monitor. Currently this list does not include resources from partner or customer-built integrations. */ +export const listMonitoredComputers: API.OperationMethod< + ListMonitoredComputersRequest, + PaginatedResponseMonitoredComputer, + ListMonitoredComputersError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListMonitoredComputersRequest, + output: PaginatedResponseMonitoredComputer, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListPeopleError = VantaOpError; +/** List people Returns a list of all people. */ +export const listPeople: API.OperationMethod< + ListPeopleRequest, + PaginatedResponsePerson, + ListPeopleError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListPeopleRequest, + output: PaginatedResponsePerson, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListPersonGroupsError = VantaOpError; +/** List groups Lists all groups by ID. */ +export const listPersonGroups: API.OperationMethod< + ListPersonGroupsRequest, + PaginatedResponseGroup, + ListPersonGroupsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListPersonGroupsRequest, + output: PaginatedResponseGroup, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListPoliciesError = VantaOpError; +/** List policies Lists all policies. */ +export const listPolicies: API.OperationMethod< + ListPoliciesRequest, + PaginatedResponsePolicy, + ListPoliciesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListPoliciesRequest, + output: PaginatedResponsePolicy, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListQuestionnaireResponsesError = VantaOpError; +/** List questionnaire responses List the responses on a questionnaire. Each response carries its `answerPartsSchema` and `answerPartsValues`, which describe the parts an answer is composed of and their current values. */ +export const listQuestionnaireResponses: API.OperationMethod< + ListQuestionnaireResponsesRequest, + PaginatedResponseQuestionnaireResponseWithoutViewerPermissions, + ListQuestionnaireResponsesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListQuestionnaireResponsesRequest, + output: PaginatedResponseQuestionnaireResponseWithoutViewerPermissions, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListQuestionnairesError = VantaOpError; +/** List questionnaires List questionnaires with filtering and pagination. */ +export const listQuestionnaires: API.OperationMethod< + ListQuestionnairesRequest, + PaginatedResponseCustomerTrustQuestionnaire, + ListQuestionnairesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListQuestionnairesRequest, + output: PaginatedResponseCustomerTrustQuestionnaire, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListResourceKindSummariesError = VantaOpError; +/** List integration resource kinds Lists a connected integration's resource types (kinds) such as S3Bucket or CloudwatchLogGroup. */ +export const listResourceKindSummaries: API.OperationMethod< + ListResourceKindSummariesRequest, + ListResourceKindSummariesResponse, + ListResourceKindSummariesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListResourceKindSummariesRequest, + output: ListResourceKindSummariesResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListResourcesError = VantaOpError; +/** List resources Lists resources for a specific integration and resource type (kind) such as S3Bucket or CloudwatchLogGroup. */ +export const listResources: API.OperationMethod< + ListResourcesRequest, + PaginatedResponseAnyResource, + ListResourcesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListResourcesRequest, + output: PaginatedResponseAnyResource, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListRiskScenarioError = VantaOpError; +/** List risk scenarios List risk scenarios. */ +export const listRiskScenario: API.OperationMethod< + ListRiskScenarioRequest, + PaginatedResponseRiskScenario, + ListRiskScenarioError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListRiskScenarioRequest, + output: PaginatedResponseRiskScenario, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListRiskScenarioControlsError = VantaOpError; +/** List risk scenario controls List the controls associated with a risk scenario. Each item is a `{ controlId, controlType }` relationship. `controlType` is `TREATMENT_PLAN` for controls that are part of the risk's treatment plan, and `EXISTING` for controls linked without a treatment-plan designation. */ +export const listRiskScenarioControls: API.OperationMethod< + ListRiskScenarioControlsRequest, + PaginatedResponseRiskScenarioControl, + ListRiskScenarioControlsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListRiskScenarioControlsRequest, + output: PaginatedResponseRiskScenarioControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTagCategoriesError = VantaOpError; +/** List tag categories List user-defined tag categories. Optionally filter by product context. */ +export const listTagCategories: API.OperationMethod< + ListTagCategoriesRequest, + ArrayResponseUserDefinedTagCategory, + ListTagCategoriesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTagCategoriesRequest, + output: ArrayResponseUserDefinedTagCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTestsError = VantaOpError; +/** List tests Lists all tests based on applied filters. */ +export const listTests: API.OperationMethod< + ListTestsRequest, + PaginatedResponseTest, + ListTestsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTestsRequest, + output: PaginatedResponseTest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTestsForControlError = VantaOpError; +/** List a control's tests List a control's tests. */ +export const listTestsForControl: API.OperationMethod< + ListTestsForControlRequest, + PaginatedResponseTest, + ListTestsForControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTestsForControlRequest, + output: PaginatedResponseTest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterAccessRequestsError = VantaOpError; +/** List Trust Center access requests Gets a list of access requests for a Trust Center. */ +export const listTrustCenterAccessRequests: API.OperationMethod< + ListTrustCenterAccessRequestsRequest, + PaginatedResponseTrustCenterAccessRequest, + ListTrustCenterAccessRequestsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterAccessRequestsRequest, + output: PaginatedResponseTrustCenterAccessRequest, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterActivityEventsError = VantaOpError; +/** List Trust Center viewer activity events Gets a list of viewer activity events on a Trust Center. */ +export const listTrustCenterActivityEvents: API.OperationMethod< + ListTrustCenterActivityEventsRequest, + PaginatedResponseTrustCenterActivityEvent, + ListTrustCenterActivityEventsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterActivityEventsRequest, + output: PaginatedResponseTrustCenterActivityEvent, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterControlsError = VantaOpError; +/** List Trust Center controls Gets a list of controls on a Trust Center. */ +export const listTrustCenterControls: API.OperationMethod< + ListTrustCenterControlsRequest, + PaginatedResponseTrustCenterControl, + ListTrustCenterControlsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterControlsRequest, + output: PaginatedResponseTrustCenterControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterDataCollectedError = VantaOpError; +/** List Trust Center data collected Gets the list of data-collected disclosures on a Trust Center. */ +export const listTrustCenterDataCollected: API.OperationMethod< + ListTrustCenterDataCollectedRequest, + ArrayResponseTrustCenterDataCollected, + ListTrustCenterDataCollectedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterDataCollectedRequest, + output: ArrayResponseTrustCenterDataCollected, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterFaqCategoriesError = VantaOpError; +/** List Trust Center FAQ categories Gets a list of FAQ categories on a Trust Center. */ +export const listTrustCenterFaqCategories: API.OperationMethod< + ListTrustCenterFaqCategoriesRequest, + ArrayResponseTrustCenterFaqCategory, + ListTrustCenterFaqCategoriesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterFaqCategoriesRequest, + output: ArrayResponseTrustCenterFaqCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterFaqsError = VantaOpError; +/** List Trust Center FAQs Gets a list of FAQs on a Trust Center. */ +export const listTrustCenterFaqs: API.OperationMethod< + ListTrustCenterFaqsRequest, + ArrayResponseTrustCenterFaq, + ListTrustCenterFaqsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterFaqsRequest, + output: ArrayResponseTrustCenterFaq, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterHistoricalAccessRequestsError = VantaOpError; +/** List historical Trust Center access requests Gets a list of historical (approved or denied) access requests for a Trust Center. */ +export const listTrustCenterHistoricalAccessRequests: API.OperationMethod< + ListTrustCenterHistoricalAccessRequestsRequest, + PaginatedResponseTrustCenterAccessRequestHistorical, + ListTrustCenterHistoricalAccessRequestsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterHistoricalAccessRequestsRequest, + output: PaginatedResponseTrustCenterAccessRequestHistorical, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterResourceCategoriesError = VantaOpError; +/** List Trust Center resource categories Gets a list of resource categories on a Trust Center. */ +export const listTrustCenterResourceCategories: API.OperationMethod< + ListTrustCenterResourceCategoriesRequest, + ArrayResponseTrustCenterResourceCategory, + ListTrustCenterResourceCategoriesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterResourceCategoriesRequest, + output: ArrayResponseTrustCenterResourceCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterResourcesError = VantaOpError; +/** List Trust Center resources Gets a list of resources on a Trust Center. */ +export const listTrustCenterResources: API.OperationMethod< + ListTrustCenterResourcesRequest, + ArrayResponseTrustCenterResource, + ListTrustCenterResourcesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterResourcesRequest, + output: ArrayResponseTrustCenterResource, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterSubprocessorsError = VantaOpError; +/** List Trust Center subprocessors Gets the list of subprocessors on a Trust Center. */ +export const listTrustCenterSubprocessors: API.OperationMethod< + ListTrustCenterSubprocessorsRequest, + ArrayResponseTrustCenterSubprocessor, + ListTrustCenterSubprocessorsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterSubprocessorsRequest, + output: ArrayResponseTrustCenterSubprocessor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterSubscriberGroupsError = VantaOpError; +/** List Trust Center subscriber groups Gets a list of subscriber groups on a Trust Center. */ +export const listTrustCenterSubscriberGroups: API.OperationMethod< + ListTrustCenterSubscriberGroupsRequest, + PaginatedResponseTrustCenterSubscriberGroup, + ListTrustCenterSubscriberGroupsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterSubscriberGroupsRequest, + output: PaginatedResponseTrustCenterSubscriberGroup, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterSubscribersError = VantaOpError; +/** List Trust Center subscribers Gets a list of subscribers on a Trust Center. */ +export const listTrustCenterSubscribers: API.OperationMethod< + ListTrustCenterSubscribersRequest, + PaginatedResponseTrustCenterSubscriber, + ListTrustCenterSubscribersError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterSubscribersRequest, + output: PaginatedResponseTrustCenterSubscriber, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterUpdatesError = VantaOpError; +/** List Trust Center updates Gets a list of updates on a Trust Center. */ +export const listTrustCenterUpdates: API.OperationMethod< + ListTrustCenterUpdatesRequest, + PaginatedResponseTrustCenterUpdateAPIResponse, + ListTrustCenterUpdatesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterUpdatesRequest, + output: PaginatedResponseTrustCenterUpdateAPIResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListTrustCenterViewersError = VantaOpError; +/** List Trust Center viewers Gets a list of viewers that have been granted access to a Trust Center. */ +export const listTrustCenterViewers: API.OperationMethod< + ListTrustCenterViewersRequest, + PaginatedResponseTrustCenterViewer, + ListTrustCenterViewersError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListTrustCenterViewersRequest, + output: PaginatedResponseTrustCenterViewer, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListUsersError = VantaOpError; +/** List active users Returns a list of all active users. */ +export const listUsers: API.OperationMethod< + ListUsersRequest, + PaginatedResponseUser, + ListUsersError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListUsersRequest, + output: PaginatedResponseUser, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListVendorAssessmentTypesError = VantaOpError; +/** List assessment types Lists the domain's assessment types. Returns both active and archived types by default; pass the `status` query parameter to filter server-side. */ +export const listVendorAssessmentTypes: API.OperationMethod< + ListVendorAssessmentTypesRequest, + PaginatedResponseVendorAssessmentType, + ListVendorAssessmentTypesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListVendorAssessmentTypesRequest, + output: PaginatedResponseVendorAssessmentType, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListVendorDocumentsError = VantaOpError; +/** List vendor documents Returns a vendor's list of documents. */ +export const listVendorDocuments: API.OperationMethod< + ListVendorDocumentsRequest, + PaginatedResponseVendorDocument, + ListVendorDocumentsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListVendorDocumentsRequest, + output: PaginatedResponseVendorDocument, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListVendorFindingsError = VantaOpError; +/** List vendor findings Lists a vendor's findings. */ +export const listVendorFindings: API.OperationMethod< + ListVendorFindingsRequest, + PaginatedResponseVendorFinding, + ListVendorFindingsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListVendorFindingsRequest, + output: PaginatedResponseVendorFinding, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListVendorRiskAttributesError = VantaOpError; +/** List vendor risk attributes Returns a list of vendor risk attributes. */ +export const listVendorRiskAttributes: API.OperationMethod< + ListVendorRiskAttributesRequest, + PaginatedResponseVendorRiskAttribute, + ListVendorRiskAttributesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListVendorRiskAttributesRequest, + output: PaginatedResponseVendorRiskAttribute, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListVendorsError = VantaOpError; +/** List vendors List of vendors. */ +export const listVendors: API.OperationMethod< + ListVendorsRequest, + PaginatedResponseVendor, + ListVendorsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListVendorsRequest, + output: PaginatedResponseVendor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListVulnerabilitiesError = VantaOpError; +/** Get vulnerabilities List all vulnerabilities based on selected filters. */ +export const listVulnerabilities: API.OperationMethod< + ListVulnerabilitiesRequest, + PaginatedResponseVulnerability, + ListVulnerabilitiesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListVulnerabilitiesRequest, + output: PaginatedResponseVulnerability, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListVulnerabilityRemediationsError = VantaOpError; +/** List vulnerability remediations List all vulnerability remediations based on selected filters. */ +export const listVulnerabilityRemediations: API.OperationMethod< + ListVulnerabilityRemediationsRequest, + PaginatedResponseVulnerabilityRemediation, + ListVulnerabilityRemediationsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListVulnerabilityRemediationsRequest, + output: PaginatedResponseVulnerabilityRemediation, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ListVulnerableAssetsError = VantaOpError; +/** List assets associated with vulnerabilities List assets that Vanta monitors that are associated with vulnerabilities. */ +export const listVulnerableAssets: API.OperationMethod< + ListVulnerableAssetsRequest, + PaginatedResponseVulnerableAsset, + ListVulnerableAssetsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ListVulnerableAssetsRequest, + output: PaginatedResponseVulnerableAsset, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type MarkAsNotPeopleError = VantaOpError; +/** Mark as not people Mark a set of accounts on the People Page as "not a person." As a result, these accounts will not be treated as people in Vanta, and you will not be able to assign them tasks or use them in tests related to your company's personnel. */ +export const markAsNotPeople: API.OperationMethod< + MarkAsNotPeopleRequest, + BulkResponse, + MarkAsNotPeopleError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: MarkAsNotPeopleRequest, + output: BulkResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type MarkAsPeopleError = VantaOpError; +/** Mark as people Mark a set of accounts on the People Page as "people." As a result, these accounts will be treated as people in Vanta, and you will be able to assign them tasks and use them in tests related to your company's personnel. */ +export const markAsPeople: API.OperationMethod< + MarkAsPeopleRequest, + BulkResponse, + MarkAsPeopleError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: MarkAsPeopleRequest, + output: BulkResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type OffboardPeopleError = VantaOpError; +/** Offboard people Offboard a list of people. A person is only eligible for offboarding completion when: 1. They are an ex-employee. 2. All of the person's monitored accounts are deactivated or manually overwritten as such. 3. All of a person's custom offboarding tasks have been completed. All of the person's unmonitored accounts will be automatically marked as deactivated when they are offboarded. If the person has unfinished offboarding tasks those will NOT automatically be completed and offboarding them will fail. */ +export const offboardPeople: API.OperationMethod< + OffboardPeopleRequest, + BulkResponse, + OffboardPeopleError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: OffboardPeopleRequest, + output: BulkResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ReactivateTestEntityError = VantaOpError; +/** Reactivate test entity Reactivates a single tested item (test entity). There may be a delay in the reactivation of the test entity until the next test run. Use the /vulnerabilities/reactivate endpoint for vulnerabilities. */ +export const reactivateTestEntity: API.OperationMethod< + ReactivateTestEntityRequest, + ReactivateTestEntityResponse, + ReactivateTestEntityError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ReactivateTestEntityRequest, + output: ReactivateTestEntityResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ReactivateVulnerabilitiesError = VantaOpError; +/** Reactivate vulnerability monitoring Reactivate vulnerabilities and resume Vanta monitoring. */ +export const reactivateVulnerabilities: API.OperationMethod< + ReactivateVulnerabilitiesRequest, + BulkResponse, + ReactivateVulnerabilitiesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ReactivateVulnerabilitiesRequest, + output: BulkResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type RemovePeopleFromGroupError = VantaOpError; +/** Remove people from group Remove people from a group. */ +export const removePeopleFromGroup: API.OperationMethod< + RemovePeopleFromGroupRequest, + BulkResponse, + RemovePeopleFromGroupError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: RemovePeopleFromGroupRequest, + output: BulkResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type RemovePersonFromGroupError = VantaOpError; +/** Remove person from a group Remove a single person, by ID, from a group. */ +export const removePersonFromGroup: API.OperationMethod< + RemovePersonFromGroupRequest, + Person, + RemovePersonFromGroupError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: RemovePersonFromGroupRequest, + output: Person, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type RemoveTagCategoryProductContextError = VantaOpError; +/** Disable tag category for product context Disables a tag category for a product context. Idempotent: removing a category that isn't enabled for the context is a no-op. */ +export const removeTagCategoryProductContext: API.OperationMethod< + RemoveTagCategoryProductContextRequest, + RemoveTagCategoryProductContextResponse, + RemoveTagCategoryProductContextError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: RemoveTagCategoryProductContextRequest, + output: RemoveTagCategoryProductContextResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type RemoveTrustCenterViewerError = VantaOpError; +/** Remove Trust Center viewer Revokes a viewer's access to a Trust Center. */ +export const removeTrustCenterViewer: API.OperationMethod< + RemoveTrustCenterViewerRequest, + RemoveTrustCenterViewerResponse, + RemoveTrustCenterViewerError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: RemoveTrustCenterViewerRequest, + output: RemoveTrustCenterViewerResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type ReplaceDocumentResourceFileError = VantaOpError; +/** Replace document resource file Replace the underlying file on a document (FILE-type) resource with a new multipart upload. Other resource fields (title, description, visibility, tags, owner, etc.) are unchanged — use PATCH for those. Returns 404 for an unknown id or a URL-type resource. Example: send `multipart/form-data` with a single `file` field (the new document binary). */ +export const replaceDocumentResourceFile: API.OperationMethod< + ReplaceDocumentResourceFileRequest, + KnowledgeBaseDocumentResourceOutput, + ReplaceDocumentResourceFileError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: ReplaceDocumentResourceFileRequest, + output: KnowledgeBaseDocumentResourceOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type SendNotificationsToAllSubscribersError = VantaOpError; +/** Send Trust Center update notifications to all subscribers Sends notifications for a specific Trust Center update to all subscribers. */ +export const sendNotificationsToAllSubscribers: API.OperationMethod< + SendNotificationsToAllSubscribersRequest, + SendNotificationsToAllSubscribersResponse, + SendNotificationsToAllSubscribersError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: SendNotificationsToAllSubscribersRequest, + output: SendNotificationsToAllSubscribersResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type SendTrustCenterUpdateNotificationsError = VantaOpError; +/** Send Trust Center update notifications to specific subscribers Sends notifications for a specific Trust Center update to specific subscribers. At least one subscriber group or email address is required. The total number of resolved, deduplicated recipient emails must not exceed 5,000. If exceeded, a 422 error is returned. Narrow your filters or split across multiple requests. */ +export const sendTrustCenterUpdateNotifications: API.OperationMethod< + SendTrustCenterUpdateNotificationsRequest, + NotifySpecificSubscribersResponse, + SendTrustCenterUpdateNotificationsError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: SendTrustCenterUpdateNotificationsRequest, + output: NotifySpecificSubscribersResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type SendTrustCenterViewerInviteReminderError = VantaOpError; +/** Send Trust Center viewer invite reminder Resends the invite email for a Trust Center viewer. */ +export const sendTrustCenterViewerInviteReminder: API.OperationMethod< + SendTrustCenterViewerInviteReminderRequest, + InviteReminderResponse, + SendTrustCenterViewerInviteReminderError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: SendTrustCenterViewerInviteReminderRequest, + output: InviteReminderResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type SetLeaveForPersonError = VantaOpError; +/** Set leave information Set leave information on a person. A person on leave is inactive in Vanta and will not be considered in certain personnel-related tests. If the person has existing leave information, it will be cleared and replaced. */ +export const setLeaveForPerson: API.OperationMethod< + SetLeaveForPersonRequest, + Person, + SetLeaveForPersonError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: SetLeaveForPersonRequest, + output: Person, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type SetOwnerForControlError = VantaOpError; +/** Set owner of a control Assign a control to a user or remove an owner from a control. */ +export const setOwnerForControl: API.OperationMethod< + SetOwnerForControlRequest, + Control, + SetOwnerForControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: SetOwnerForControlRequest, + output: Control, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type SetOwnerForDocumentError = VantaOpError; +/** Set document owner Assign or unassign a user to the document. */ +export const setOwnerForDocument: API.OperationMethod< + SetOwnerForDocumentRequest, + Document, + SetOwnerForDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: SetOwnerForDocumentRequest, + output: Document, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type SetStatusForVendorError = VantaOpError; +/** Set vendor status Sets the status of a vendor, which can be MANAGED, ARCHIVED, or IN_PROCUREMENT. */ +export const setStatusForVendor: API.OperationMethod< + SetStatusForVendorRequest, + Vendor, + SetStatusForVendorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: SetStatusForVendorRequest, + output: Vendor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type SubmitDocumentCollectionError = VantaOpError; +/** Submit document collection Submit document collection. */ +export const submitDocumentCollection: API.OperationMethod< + SubmitDocumentCollectionRequest, + SubmitDocumentCollectionResponse, + SubmitDocumentCollectionError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: SubmitDocumentCollectionRequest, + output: SubmitDocumentCollectionResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type SubmitRiskForApprovalError = VantaOpError; +/** Submit risk scenario for approval Submit a risk scenario for approval. */ +export const submitRiskForApproval: API.OperationMethod< + SubmitRiskForApprovalRequest, + RiskScenario, + SubmitRiskForApprovalError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: SubmitRiskForApprovalRequest, + output: RiskScenario, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateAnswerLibraryEntryRouteError = VantaOpError; +/** Update Answer Library entry Update an Answer Library entry. */ +export const updateAnswerLibraryEntryRoute: API.OperationMethod< + UpdateAnswerLibraryEntryRouteRequest, + KnowledgeBaseAnswerLibraryEntryOutput, + UpdateAnswerLibraryEntryRouteError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateAnswerLibraryEntryRouteRequest, + output: KnowledgeBaseAnswerLibraryEntryOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateComplianceFrameworkError = VantaOpError; +/** Update Trust Center compliance framework Updates a compliance framework on a Trust Center. */ +export const updateComplianceFramework: API.OperationMethod< + UpdateComplianceFrameworkRequest, + TrustCenterComplianceFramework, + UpdateComplianceFrameworkError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateComplianceFrameworkRequest, + output: TrustCenterComplianceFramework, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateControlMetadataError = VantaOpError; +/** Update a control's metadata Update a control's metadata. */ +export const updateControlMetadata: API.OperationMethod< + UpdateControlMetadataRequest, + ControlDetail, + UpdateControlMetadataError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateControlMetadataRequest, + output: ControlDetail, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateCustomerTrustAccountError = VantaOpError; +/** Update customer trust account Update a customer trust account by ID. */ +export const updateCustomerTrustAccount: API.OperationMethod< + UpdateCustomerTrustAccountRequest, + CustomerTrustAccountVantaApi, + UpdateCustomerTrustAccountError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateCustomerTrustAccountRequest, + output: CustomerTrustAccountVantaApi, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateDocumentResourceError = VantaOpError; +/** Update document resource Apply a partial update to a document (FILE-type) resource. Omitted fields are left untouched. To swap the underlying file, use `POST /v1/knowledge-base/resources/documents/{id}/upload`. Returns 404 for an unknown id or a URL-type resource. */ +export const updateDocumentResource: API.OperationMethod< + UpdateDocumentResourceRequest, + KnowledgeBaseDocumentResourceOutput, + UpdateDocumentResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateDocumentResourceRequest, + output: KnowledgeBaseDocumentResourceOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdatePersonError = VantaOpError; +/** Update person metadata Update a person's basic information. */ +export const updatePerson: API.OperationMethod< + UpdatePersonRequest, + Person, + UpdatePersonError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdatePersonRequest, + output: Person, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateQuestionnaireError = VantaOpError; +/** Update questionnaire Update an existing questionnaire. Updates one or more fields of a questionnaire. This endpoint cannot be used to set a questionnaire's status to `APPROVED` or `COMPLETED`. To perform those specific transitions, please use the `approveQuestionnaire` and `completeQuestionnaire` endpoints, respectively. */ +export const updateQuestionnaire: API.OperationMethod< + UpdateQuestionnaireRequest, + CustomerTrustQuestionnaire, + UpdateQuestionnaireError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateQuestionnaireRequest, + output: CustomerTrustQuestionnaire, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateQuestionnaireResponseContentError = VantaOpError; +/** Update questionnaire response content Update the answer content of a questionnaire response. The edit is recorded as performed by the calling application, since vanta-api authenticates an OAuth client rather than a specific user. */ +export const updateQuestionnaireResponseContent: API.OperationMethod< + UpdateQuestionnaireResponseContentRequest, + QuestionnaireResponseWithoutViewerPermissions, + UpdateQuestionnaireResponseContentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateQuestionnaireResponseContentRequest, + output: QuestionnaireResponseWithoutViewerPermissions, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateQuestionnaireResponseOwnerError = VantaOpError; +/** Update questionnaire response owner Reassign or clear the owner of a questionnaire response. The assignment is recorded as performed by the calling API client, so the notification to the new owner names the Vanta API rather than a user. */ +export const updateQuestionnaireResponseOwner: API.OperationMethod< + UpdateQuestionnaireResponseOwnerRequest, + QuestionnaireResponseWithoutViewerPermissions, + UpdateQuestionnaireResponseOwnerError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateQuestionnaireResponseOwnerRequest, + output: QuestionnaireResponseWithoutViewerPermissions, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateResourceError = VantaOpError; +/** Update resource metadata Updates metadata for a specific resource such as an S3Bucket or CloudwatchLogGroup. */ +export const updateResource: API.OperationMethod< + UpdateResourceRequest2, + UpdateResourceResponse, + UpdateResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateResourceRequest2, + output: UpdateResourceResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateResourcesError = VantaOpError; +/** Update resource metadata Updates metadata for multiple resources. */ +export const updateResources: API.OperationMethod< + UpdateResourcesRequest, + BulkResponse, + UpdateResourcesError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateResourcesRequest, + output: BulkResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateRiskScenarioError = VantaOpError; +/** Update risk scenario Update a risk scenario. */ +export const updateRiskScenario: API.OperationMethod< + UpdateRiskScenarioRequest, + RiskScenario, + UpdateRiskScenarioError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateRiskScenarioRequest, + output: RiskScenario, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateRiskScenarioControlError = VantaOpError; +/** Change a risk scenario control's controlType Change the `controlType` on an existing risk-scenario / control association. Body: `{ controlType }`. The server atomically moves the resolved control between the treatment-plan and existing-control sets in a single update — there is no intermediate unlinked state. `PATCH { "controlType": "EXISTING" }` removes the control from the treatment plan but keeps it linked as an existing control; use `DELETE` to unlink it entirely. Returns 404 if the control is not currently associated with the scenario. Setting the `controlType` it already has is a 200 no-op. */ +export const updateRiskScenarioControl: API.OperationMethod< + UpdateRiskScenarioControlRequest, + RiskScenarioControl, + UpdateRiskScenarioControlError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateRiskScenarioControlRequest, + output: RiskScenarioControl, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterError = VantaOpError; +/** Update Trust Center Updates a Trust Center by slug ID. */ +export const updateTrustCenter: API.OperationMethod< + UpdateTrustCenterRequest, + TrustCenter, + UpdateTrustCenterError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterRequest, + output: TrustCenter, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterControlCategoryError = VantaOpError; +/** Update Trust Center control category Updates a control category on a Trust Center. */ +export const updateTrustCenterControlCategory: API.OperationMethod< + UpdateTrustCenterControlCategoryRequest, + TrustCenterControlCategory, + UpdateTrustCenterControlCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterControlCategoryRequest, + output: TrustCenterControlCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterControlsInCategoryError = VantaOpError; +/** Bulk edit controls in a category Bulk add or remove controls from a control category on a Trust Center. */ +export const updateTrustCenterControlsInCategory: API.OperationMethod< + UpdateTrustCenterControlsInCategoryRequest, + TrustCenterControlCategory, + UpdateTrustCenterControlsInCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterControlsInCategoryRequest, + output: TrustCenterControlCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterFaqError = VantaOpError; +/** Update Trust Center FAQ Update a specific FAQ on the Trust Center by ID. */ +export const updateTrustCenterFaq: API.OperationMethod< + UpdateTrustCenterFaqRequest, + TrustCenterFaq, + UpdateTrustCenterFaqError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterFaqRequest, + output: TrustCenterFaq, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterFaqCategoryError = VantaOpError; +/** Update Trust Center FAQ category Updates an FAQ category on a Trust Center. */ +export const updateTrustCenterFaqCategory: API.OperationMethod< + UpdateTrustCenterFaqCategoryRequest, + TrustCenterFaqCategory, + UpdateTrustCenterFaqCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterFaqCategoryRequest, + output: TrustCenterFaqCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterResourceError = VantaOpError; +/** Update Trust Center document Updates a specific document on a Trust Center. */ +export const updateTrustCenterResource: API.OperationMethod< + UpdateTrustCenterResourceRequest, + TrustCenterResource, + UpdateTrustCenterResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterResourceRequest, + output: TrustCenterResource, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterResourceCategoryError = VantaOpError; +/** Update Trust Center resource category Updates a resource category on a Trust Center. */ +export const updateTrustCenterResourceCategory: API.OperationMethod< + UpdateTrustCenterResourceCategoryRequest, + TrustCenterResourceCategory, + UpdateTrustCenterResourceCategoryError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterResourceCategoryRequest, + output: TrustCenterResourceCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterSubprocessorError = VantaOpError; +/** Update Trust Center subprocessor Updates a subprocessor on a Trust Center. */ +export const updateTrustCenterSubprocessor: API.OperationMethod< + UpdateTrustCenterSubprocessorRequest, + TrustCenterSubprocessor, + UpdateTrustCenterSubprocessorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterSubprocessorRequest, + output: TrustCenterSubprocessor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterSubscriberGroupError = VantaOpError; +/** Edit Trust Center subscriber group Edits a Trust Center subscriber group. */ +export const updateTrustCenterSubscriberGroup: API.OperationMethod< + UpdateTrustCenterSubscriberGroupRequest, + TrustCenterSubscriberGroup, + UpdateTrustCenterSubscriberGroupError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterSubscriberGroupRequest, + output: TrustCenterSubscriberGroup, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterUpdateError = VantaOpError; +/** Update Trust Center update Updates an update on a Trust Center. */ +export const updateTrustCenterUpdate: API.OperationMethod< + UpdateTrustCenterUpdateRequest, + TrustCenterUpdateAPIResponse, + UpdateTrustCenterUpdateError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterUpdateRequest, + output: TrustCenterUpdateAPIResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateTrustCenterViewerError = VantaOpError; +/** Update Trust Center viewer Updates a viewer's access on a Trust Center. */ +export const updateTrustCenterViewer: API.OperationMethod< + UpdateTrustCenterViewerRequest, + TrustCenterViewer, + UpdateTrustCenterViewerError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateTrustCenterViewerRequest, + output: TrustCenterViewer, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateVendorError = VantaOpError; +/** Update vendor by ID Update vendor. */ +export const updateVendor: API.OperationMethod< + UpdateVendorRequest, + Vendor, + UpdateVendorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateVendorRequest, + output: Vendor, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateVendorFindingError = VantaOpError; +/** Update vendor finding Update vendor finding. */ +export const updateVendorFinding: API.OperationMethod< + UpdateVendorFindingRequest, + VendorFinding, + UpdateVendorFindingError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateVendorFindingRequest, + output: VendorFinding, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpdateWebpageResourceError = VantaOpError; +/** Update webpage resource Apply a partial update to a webpage (URL-type) resource. Omitted fields are left untouched. `description`, `ownerAssignment`, and `expirationDate` accept `null` to clear. The resource URL is not updatable here — recreate the resource if the URL needs to change. Returns 404 for an unknown id or a FILE-type resource. */ +export const updateWebpageResource: API.OperationMethod< + UpdateWebpageResourceRequest, + KnowledgeBaseWebpageResourceOutput, + UpdateWebpageResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpdateWebpageResourceRequest, + output: KnowledgeBaseWebpageResourceOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UploadComplianceFrameworkBadgeError = VantaOpError; +/** Upload Trust Center compliance framework badge Uploads a badge image for a compliance framework on a Trust Center. */ +export const uploadComplianceFrameworkBadge: API.OperationMethod< + UploadComplianceFrameworkBadgeRequest, + BadgeUploadResponse, + UploadComplianceFrameworkBadgeError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UploadComplianceFrameworkBadgeRequest, + output: BadgeUploadResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UploadContractError = VantaOpError; +/** Upload contract Upload a contract. Rate limit: 10 requests / minute. */ +export const uploadContract: API.OperationMethod< + UploadContractRequest, + Contract, + UploadContractError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UploadContractRequest, + output: Contract, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UploadDocumentForSecurityReviewError = VantaOpError; +/** Add document to security review Add document to a security review. */ +export const uploadDocumentForSecurityReview: API.OperationMethod< + UploadDocumentForSecurityReviewRequest, + VendorDocument, + UploadDocumentForSecurityReviewError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UploadDocumentForSecurityReviewRequest, + output: VendorDocument, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UploadDocumentToVendorError = VantaOpError; +/** Add document to a vendor Add document to a vendor. */ +export const uploadDocumentToVendor: API.OperationMethod< + UploadDocumentToVendorRequest, + VendorDocument, + UploadDocumentToVendorError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UploadDocumentToVendorRequest, + output: VendorDocument, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UploadFileForDocumentError = VantaOpError; +/** Upload file for document Upload a file for a document. */ +export const uploadFileForDocument: API.OperationMethod< + UploadFileForDocumentRequest, + UploadedFileT, + UploadFileForDocumentError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UploadFileForDocumentRequest, + output: UploadedFileT, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UploadTrustCenterFaviconError = VantaOpError; +/** Upload Trust Center favicon Uploads a favicon for a Trust Center. The Trust Center must have a custom domain configured. */ +export const uploadTrustCenterFavicon: API.OperationMethod< + UploadTrustCenterFaviconRequest, + UploadFaviconResponse, + UploadTrustCenterFaviconError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UploadTrustCenterFaviconRequest, + output: UploadFaviconResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpsertGroupsForTrustCenterSubscriberError = VantaOpError; +/** Set groups for a Trust Center subscriber Sets groups on a subscriber. */ +export const upsertGroupsForTrustCenterSubscriber: API.OperationMethod< + UpsertGroupsForTrustCenterSubscriberRequest, + TrustCenterSubscriber, + UpsertGroupsForTrustCenterSubscriberError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpsertGroupsForTrustCenterSubscriberRequest, + output: TrustCenterSubscriber, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpsertTrustCenterControlCategoriesOrderError = VantaOpError; +/** Reorder Trust Center control categories Reorders control categories on a Trust Center. The request body must contain the complete set of category IDs in the desired order. */ +export const upsertTrustCenterControlCategoriesOrder: API.OperationMethod< + UpsertTrustCenterControlCategoriesOrderRequest, + ArrayResponseTrustCenterControlCategory, + UpsertTrustCenterControlCategoriesOrderError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpsertTrustCenterControlCategoriesOrderRequest, + output: ArrayResponseTrustCenterControlCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpsertTrustCenterControlsInCategoryOrderError = VantaOpError; +/** Reorder controls in a Trust Center control category Reorders controls within a control category on a Trust Center. The request body must contain the complete set of control IDs in the category in the desired order. */ +export const upsertTrustCenterControlsInCategoryOrder: API.OperationMethod< + UpsertTrustCenterControlsInCategoryOrderRequest, + TrustCenterControlCategory, + UpsertTrustCenterControlsInCategoryOrderError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpsertTrustCenterControlsInCategoryOrderRequest, + output: TrustCenterControlCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpsertTrustCenterDataCollectedError = VantaOpError; +/** Set Trust Center data collected Replaces all data-collected disclosures on a Trust Center with the provided list. This is a full replacement — any existing disclosures not included in the request body will be removed. To add or remove a single entry, first GET the current list, modify it, then PUT the updated list back. */ +export const upsertTrustCenterDataCollected: API.OperationMethod< + UpsertTrustCenterDataCollectedRequest, + ArrayResponseTrustCenterDataCollected, + UpsertTrustCenterDataCollectedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpsertTrustCenterDataCollectedRequest, + output: ArrayResponseTrustCenterDataCollected, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpsertTrustCenterResourceCategoriesOrderError = VantaOpError; +/** Reorder Trust Center resource categories Reorders resource categories on a Trust Center. The request body must contain the complete set of category IDs in the desired order. */ +export const upsertTrustCenterResourceCategoriesOrder: API.OperationMethod< + UpsertTrustCenterResourceCategoriesOrderRequest, + ArrayResponseTrustCenterResourceCategory, + UpsertTrustCenterResourceCategoriesOrderError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpsertTrustCenterResourceCategoriesOrderRequest, + output: ArrayResponseTrustCenterResourceCategory, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type UpsertTrustCenterVideosError = VantaOpError; +/** Set Trust Center videos Configures the videos displayed on a Trust Center. Replaces all existing videos with the provided list. */ +export const upsertTrustCenterVideos: API.OperationMethod< + UpsertTrustCenterVideosRequest, + ArrayResponseTrustCenterVideo, + UpsertTrustCenterVideosError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: UpsertTrustCenterVideosRequest, + output: ArrayResponseTrustCenterVideo, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type VerifyAnswerLibraryEntryRouteError = VantaOpError; +/** Verify Answer Library entry Mark an Answer Library entry as verified. Stamps `lastVerifiedAt` to the current time; the entry's question, answer, tags, owner, and expiration are left unchanged. */ +export const verifyAnswerLibraryEntryRoute: API.OperationMethod< + VerifyAnswerLibraryEntryRouteRequest, + KnowledgeBaseAnswerLibraryEntryOutput, + VerifyAnswerLibraryEntryRouteError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: VerifyAnswerLibraryEntryRouteRequest, + output: KnowledgeBaseAnswerLibraryEntryOutput, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type VerifyKnowledgeBaseResourceError = VantaOpError; +/** Verify Knowledge Base resource Mark a Knowledge Base resource (FILE or URL) as verified. Stamps `lastVerifiedAt` to the current time and resets `expiresAt` forward by the domain's configured review cadence; the resource's content (title, description, file or url, tags, owner) is left unchanged. Caller does not need to know the resource type — the persisted `resourceType` is used. Returns 404 when the id is unknown in the domain or — for FILE rows — when the underlying uploaded document has been deleted. */ +export const verifyKnowledgeBaseResource: API.OperationMethod< + VerifyKnowledgeBaseResourceRequest, + VerifyKnowledgeBaseResourceResponse, + VerifyKnowledgeBaseResourceError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: VerifyKnowledgeBaseResourceRequest, + output: VerifyKnowledgeBaseResourceResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); diff --git a/packages/vanta/src/services/webhooks.ts b/packages/vanta/src/services/webhooks.ts new file mode 100644 index 000000000..6e07cf203 --- /dev/null +++ b/packages/vanta/src/services/webhooks.ts @@ -0,0 +1,1460 @@ +// AUTO-GENERATED by scripts/generate.ts from .generated-specs (specs/spec-mirror-vanta). Do not edit. +import * as S from "@distilled.cloud/core/schema"; +import * as API from "@distilled.cloud/core/api"; +import * as T from "../traits.ts"; +import { + VantaProtocol, + type VantaOpError, + type VantaOpContext, +} from "../protocol.ts"; +import { UnknownVantaError } from "../errors.ts"; +import * as Retry from "../retry.ts"; + +export type { VantaOpError, VantaOpContext }; + +export interface V1ControlCommentCreatedRequestControl { + /** The unique identifier of the control the comment was added to. */ + id: string; + /** The unique identifier of the audit the control belongs to. */ + auditId: string; +} +export const V1ControlCommentCreatedRequestControl = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String, + auditId: S.String, + }), +).annotate({ + identifier: "V1ControlCommentCreatedRequestControl", +}) as any as S.Schema; + +export interface V1ControlCommentCreatedRequestComment { + /** The unique identifier of the comment. */ + id: string; +} +export const V1ControlCommentCreatedRequestComment = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String, + }), +).annotate({ + identifier: "V1ControlCommentCreatedRequestComment", +}) as any as S.Schema; + +export interface V1ControlCommentCreatedRequest { + control: V1ControlCommentCreatedRequestControl; + comment: V1ControlCommentCreatedRequestComment; +} +export const V1ControlCommentCreatedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + control: V1ControlCommentCreatedRequestControl, + comment: V1ControlCommentCreatedRequestComment, + }).pipe( + T.Http({ method: "POST", uri: "/v1.control.comment.created", code: 200 }), + ), +).annotate({ + identifier: "V1ControlCommentCreatedRequest", +}) as any as S.Schema; + +export interface V1ControlCommentCreatedResponse {} +export const V1ControlCommentCreatedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1ControlCommentCreatedResponse", +}) as any as S.Schema; + +export interface V1ControlCommentDeletedRequestControl { + /** The unique identifier of the control the comment was deleted from. */ + id: string; + /** The unique identifier of the audit the control belongs to. */ + auditId: string; +} +export const V1ControlCommentDeletedRequestControl = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String, + auditId: S.String, + }), +).annotate({ + identifier: "V1ControlCommentDeletedRequestControl", +}) as any as S.Schema; + +export type V1ControlCommentDeletedRequestComment = + V1ControlCommentCreatedRequestComment; +export const V1ControlCommentDeletedRequestComment = + V1ControlCommentCreatedRequestComment; + +export interface V1ControlCommentDeletedRequest { + control: V1ControlCommentDeletedRequestControl; + comment: V1ControlCommentCreatedRequestComment; +} +export const V1ControlCommentDeletedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + control: V1ControlCommentDeletedRequestControl, + comment: V1ControlCommentCreatedRequestComment, + }).pipe( + T.Http({ method: "POST", uri: "/v1.control.comment.deleted", code: 200 }), + ), +).annotate({ + identifier: "V1ControlCommentDeletedRequest", +}) as any as S.Schema; + +export interface V1ControlCommentDeletedResponse {} +export const V1ControlCommentDeletedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1ControlCommentDeletedResponse", +}) as any as S.Schema; + +export interface V1ControlCommentUpdatedRequestControl { + /** The unique identifier of the control the comment belongs to. */ + id: string; + /** The unique identifier of the audit the control belongs to. */ + auditId: string; +} +export const V1ControlCommentUpdatedRequestControl = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String, + auditId: S.String, + }), +).annotate({ + identifier: "V1ControlCommentUpdatedRequestControl", +}) as any as S.Schema; + +export type V1ControlCommentUpdatedRequestComment = + V1ControlCommentCreatedRequestComment; +export const V1ControlCommentUpdatedRequestComment = + V1ControlCommentCreatedRequestComment; + +export interface V1ControlCommentUpdatedRequest { + control: V1ControlCommentUpdatedRequestControl; + comment: V1ControlCommentCreatedRequestComment; +} +export const V1ControlCommentUpdatedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + control: V1ControlCommentUpdatedRequestControl, + comment: V1ControlCommentCreatedRequestComment, + }).pipe( + T.Http({ method: "POST", uri: "/v1.control.comment.updated", code: 200 }), + ), +).annotate({ + identifier: "V1ControlCommentUpdatedRequest", +}) as any as S.Schema; + +export interface V1ControlCommentUpdatedResponse {} +export const V1ControlCommentUpdatedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1ControlCommentUpdatedResponse", +}) as any as S.Schema; + +export interface V1EvidenceCommentCreatedRequestEvidence { + /** The unique identifier of the evidence. */ + id: string; + /** The unique identifier of the audit the evidence belongs to. */ + auditId: string; +} +export const V1EvidenceCommentCreatedRequestEvidence = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String, + auditId: S.String, + }), +).annotate({ + identifier: "V1EvidenceCommentCreatedRequestEvidence", +}) as any as S.Schema; + +export type V1EvidenceCommentCreatedRequestComment = + V1ControlCommentCreatedRequestComment; +export const V1EvidenceCommentCreatedRequestComment = + V1ControlCommentCreatedRequestComment; + +export interface V1EvidenceCommentCreatedRequest { + evidence: V1EvidenceCommentCreatedRequestEvidence; + comment: V1ControlCommentCreatedRequestComment; +} +export const V1EvidenceCommentCreatedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + evidence: V1EvidenceCommentCreatedRequestEvidence, + comment: V1ControlCommentCreatedRequestComment, + }).pipe( + T.Http({ method: "POST", uri: "/v1.evidence.comment.created", code: 200 }), + ), +).annotate({ + identifier: "V1EvidenceCommentCreatedRequest", +}) as any as S.Schema; + +export interface V1EvidenceCommentCreatedResponse {} +export const V1EvidenceCommentCreatedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1EvidenceCommentCreatedResponse", +}) as any as S.Schema; + +export type V1EvidenceCommentDeletedRequestEvidence = + V1EvidenceCommentCreatedRequestEvidence; +export const V1EvidenceCommentDeletedRequestEvidence = + V1EvidenceCommentCreatedRequestEvidence; + +export type V1EvidenceCommentDeletedRequestComment = + V1ControlCommentCreatedRequestComment; +export const V1EvidenceCommentDeletedRequestComment = + V1ControlCommentCreatedRequestComment; + +export interface V1EvidenceCommentDeletedRequest { + evidence: V1EvidenceCommentCreatedRequestEvidence; + comment: V1ControlCommentCreatedRequestComment; +} +export const V1EvidenceCommentDeletedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + evidence: V1EvidenceCommentCreatedRequestEvidence, + comment: V1ControlCommentCreatedRequestComment, + }).pipe( + T.Http({ method: "POST", uri: "/v1.evidence.comment.deleted", code: 200 }), + ), +).annotate({ + identifier: "V1EvidenceCommentDeletedRequest", +}) as any as S.Schema; + +export interface V1EvidenceCommentDeletedResponse {} +export const V1EvidenceCommentDeletedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1EvidenceCommentDeletedResponse", +}) as any as S.Schema; + +export type V1EvidenceCommentUpdatedRequestEvidence = + V1EvidenceCommentCreatedRequestEvidence; +export const V1EvidenceCommentUpdatedRequestEvidence = + V1EvidenceCommentCreatedRequestEvidence; + +export type V1EvidenceCommentUpdatedRequestComment = + V1ControlCommentCreatedRequestComment; +export const V1EvidenceCommentUpdatedRequestComment = + V1ControlCommentCreatedRequestComment; + +export interface V1EvidenceCommentUpdatedRequest { + evidence: V1EvidenceCommentCreatedRequestEvidence; + comment: V1ControlCommentCreatedRequestComment; +} +export const V1EvidenceCommentUpdatedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + evidence: V1EvidenceCommentCreatedRequestEvidence, + comment: V1ControlCommentCreatedRequestComment, + }).pipe( + T.Http({ method: "POST", uri: "/v1.evidence.comment.updated", code: 200 }), + ), +).annotate({ + identifier: "V1EvidenceCommentUpdatedRequest", +}) as any as S.Schema; + +export interface V1EvidenceCommentUpdatedResponse {} +export const V1EvidenceCommentUpdatedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1EvidenceCommentUpdatedResponse", +}) as any as S.Schema; + +/** The evidence item that came into scope for the audit. */ +export type V1EvidenceCreatedRequestEvidence = + V1EvidenceCommentCreatedRequestEvidence; +export const V1EvidenceCreatedRequestEvidence = + V1EvidenceCommentCreatedRequestEvidence; + +export interface V1EvidenceCreatedRequest { + /** The evidence item that came into scope for the audit. */ + evidence: V1EvidenceCommentCreatedRequestEvidence; +} +export const V1EvidenceCreatedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + evidence: V1EvidenceCommentCreatedRequestEvidence, + }).pipe(T.Http({ method: "POST", uri: "/v1.evidence.created", code: 200 })), +).annotate({ + identifier: "V1EvidenceCreatedRequest", +}) as any as S.Schema; + +export interface V1EvidenceCreatedResponse {} +export const V1EvidenceCreatedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1EvidenceCreatedResponse", +}) as any as S.Schema; + +/** The evidence item that left scope for the audit. */ +export type V1EvidenceDeletedRequestEvidence = + V1EvidenceCommentCreatedRequestEvidence; +export const V1EvidenceDeletedRequestEvidence = + V1EvidenceCommentCreatedRequestEvidence; + +export interface V1EvidenceDeletedRequest { + /** The evidence item that left scope for the audit. */ + evidence: V1EvidenceCommentCreatedRequestEvidence; +} +export const V1EvidenceDeletedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + evidence: V1EvidenceCommentCreatedRequestEvidence, + }).pipe(T.Http({ method: "POST", uri: "/v1.evidence.deleted", code: 200 })), +).annotate({ + identifier: "V1EvidenceDeletedRequest", +}) as any as S.Schema; + +export interface V1EvidenceDeletedResponse {} +export const V1EvidenceDeletedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1EvidenceDeletedResponse", +}) as any as S.Schema; + +/** The status the evidence item was in before the change. `INITIALIZED` is an internal status and is never delivered. */ +export type V1EvidenceStatusChangedRequestEvidenceOldStatus = + | "ACCEPTED" + | "FLAGGED" + | "INITIALIZED" + | "NA" + | "NOT_READY_FOR_AUDIT" + | "READY_FOR_AUDIT"; +export const V1EvidenceStatusChangedRequestEvidenceOldStatus = + /*@__PURE__*/ S.String; + +/** The status the evidence item is in after the change. A value of `READY_FOR_AUDIT` means the customer has provided evidence for the item and it is ready for the auditor to review. `INITIALIZED` is an internal status and is never delivered. */ +export type V1EvidenceStatusChangedRequestEvidenceNewStatus = + | "ACCEPTED" + | "FLAGGED" + | "INITIALIZED" + | "NA" + | "NOT_READY_FOR_AUDIT" + | "READY_FOR_AUDIT"; +export const V1EvidenceStatusChangedRequestEvidenceNewStatus = + /*@__PURE__*/ S.String; + +export interface V1EvidenceStatusChangedRequestEvidence { + /** The unique identifier of the evidence. */ + id: string; + /** The unique identifier of the audit the evidence belongs to. */ + auditId: string; + /** The status the evidence item was in before the change. `INITIALIZED` is an internal status and is never delivered. */ + oldStatus: V1EvidenceStatusChangedRequestEvidenceOldStatus | (string & {}); + /** The status the evidence item is in after the change. A value of `READY_FOR_AUDIT` means the customer has provided evidence for the item and it is ready for the auditor to review. `INITIALIZED` is an internal status and is never delivered. */ + newStatus: V1EvidenceStatusChangedRequestEvidenceNewStatus | (string & {}); +} +export const V1EvidenceStatusChangedRequestEvidence = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String, + auditId: S.String, + oldStatus: V1EvidenceStatusChangedRequestEvidenceOldStatus, + newStatus: V1EvidenceStatusChangedRequestEvidenceNewStatus, + }), +).annotate({ + identifier: "V1EvidenceStatusChangedRequestEvidence", +}) as any as S.Schema; + +export interface V1EvidenceStatusChangedRequest { + evidence: V1EvidenceStatusChangedRequestEvidence; +} +export const V1EvidenceStatusChangedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + evidence: V1EvidenceStatusChangedRequestEvidence, + }).pipe( + T.Http({ method: "POST", uri: "/v1.evidence.status-changed", code: 200 }), + ), +).annotate({ + identifier: "V1EvidenceStatusChangedRequest", +}) as any as S.Schema; + +export interface V1EvidenceStatusChangedResponse {} +export const V1EvidenceStatusChangedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1EvidenceStatusChangedResponse", +}) as any as S.Schema; + +export interface V1InformationRequestCommentCreatedRequestInformationRequest { + /** The unique identifier of the information request. */ + id: string; + /** The unique identifier of the audit the information request belongs to. */ + auditId: string; +} +export const V1InformationRequestCommentCreatedRequestInformationRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + auditId: S.String, + }), + ).annotate({ + identifier: "V1InformationRequestCommentCreatedRequestInformationRequest", + }) as any as S.Schema; + +export type V1InformationRequestCommentCreatedRequestComment = + V1ControlCommentCreatedRequestComment; +export const V1InformationRequestCommentCreatedRequestComment = + V1ControlCommentCreatedRequestComment; + +export interface V1InformationRequestCommentCreatedRequest { + informationRequest: V1InformationRequestCommentCreatedRequestInformationRequest; + comment: V1ControlCommentCreatedRequestComment; +} +export const V1InformationRequestCommentCreatedRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + informationRequest: + V1InformationRequestCommentCreatedRequestInformationRequest, + comment: V1ControlCommentCreatedRequestComment, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.information-request.comment.created", + code: 200, + }), + ), + ).annotate({ + identifier: "V1InformationRequestCommentCreatedRequest", + }) as any as S.Schema; + +export interface V1InformationRequestCommentCreatedResponse {} +export const V1InformationRequestCommentCreatedResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "V1InformationRequestCommentCreatedResponse", + }) as any as S.Schema; + +export type V1InformationRequestCommentDeletedRequestInformationRequest = + V1InformationRequestCommentCreatedRequestInformationRequest; +export const V1InformationRequestCommentDeletedRequestInformationRequest = + V1InformationRequestCommentCreatedRequestInformationRequest; + +export type V1InformationRequestCommentDeletedRequestComment = + V1ControlCommentCreatedRequestComment; +export const V1InformationRequestCommentDeletedRequestComment = + V1ControlCommentCreatedRequestComment; + +export interface V1InformationRequestCommentDeletedRequest { + informationRequest: V1InformationRequestCommentCreatedRequestInformationRequest; + comment: V1ControlCommentCreatedRequestComment; +} +export const V1InformationRequestCommentDeletedRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + informationRequest: + V1InformationRequestCommentCreatedRequestInformationRequest, + comment: V1ControlCommentCreatedRequestComment, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.information-request.comment.deleted", + code: 200, + }), + ), + ).annotate({ + identifier: "V1InformationRequestCommentDeletedRequest", + }) as any as S.Schema; + +export interface V1InformationRequestCommentDeletedResponse {} +export const V1InformationRequestCommentDeletedResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "V1InformationRequestCommentDeletedResponse", + }) as any as S.Schema; + +export type V1InformationRequestCommentUpdatedRequestInformationRequest = + V1InformationRequestCommentCreatedRequestInformationRequest; +export const V1InformationRequestCommentUpdatedRequestInformationRequest = + V1InformationRequestCommentCreatedRequestInformationRequest; + +export type V1InformationRequestCommentUpdatedRequestComment = + V1ControlCommentCreatedRequestComment; +export const V1InformationRequestCommentUpdatedRequestComment = + V1ControlCommentCreatedRequestComment; + +export interface V1InformationRequestCommentUpdatedRequest { + informationRequest: V1InformationRequestCommentCreatedRequestInformationRequest; + comment: V1ControlCommentCreatedRequestComment; +} +export const V1InformationRequestCommentUpdatedRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + informationRequest: + V1InformationRequestCommentCreatedRequestInformationRequest, + comment: V1ControlCommentCreatedRequestComment, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.information-request.comment.updated", + code: 200, + }), + ), + ).annotate({ + identifier: "V1InformationRequestCommentUpdatedRequest", + }) as any as S.Schema; + +export interface V1InformationRequestCommentUpdatedResponse {} +export const V1InformationRequestCommentUpdatedResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "V1InformationRequestCommentUpdatedResponse", + }) as any as S.Schema; + +export type V1InformationRequestEvidenceCreatedRequestInformationRequest = + V1InformationRequestCommentCreatedRequestInformationRequest; +export const V1InformationRequestEvidenceCreatedRequestInformationRequest = + V1InformationRequestCommentCreatedRequestInformationRequest; + +export interface V1InformationRequestEvidenceCreatedRequestEvidence { + /** The unique identifier of the evidence. */ + id: string; +} +export const V1InformationRequestEvidenceCreatedRequestEvidence = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + }), + ).annotate({ + identifier: "V1InformationRequestEvidenceCreatedRequestEvidence", + }) as any as S.Schema; + +export interface V1InformationRequestEvidenceCreatedRequest { + informationRequest: V1InformationRequestCommentCreatedRequestInformationRequest; + evidence: V1InformationRequestEvidenceCreatedRequestEvidence; +} +export const V1InformationRequestEvidenceCreatedRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + informationRequest: + V1InformationRequestCommentCreatedRequestInformationRequest, + evidence: V1InformationRequestEvidenceCreatedRequestEvidence, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.information-request.evidence.created", + code: 200, + }), + ), + ).annotate({ + identifier: "V1InformationRequestEvidenceCreatedRequest", + }) as any as S.Schema; + +export interface V1InformationRequestEvidenceCreatedResponse {} +export const V1InformationRequestEvidenceCreatedResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "V1InformationRequestEvidenceCreatedResponse", + }) as any as S.Schema; + +export type V1InformationRequestEvidenceDeletedRequestInformationRequest = + V1InformationRequestCommentCreatedRequestInformationRequest; +export const V1InformationRequestEvidenceDeletedRequestInformationRequest = + V1InformationRequestCommentCreatedRequestInformationRequest; + +export type V1InformationRequestEvidenceDeletedRequestEvidence = + V1InformationRequestEvidenceCreatedRequestEvidence; +export const V1InformationRequestEvidenceDeletedRequestEvidence = + V1InformationRequestEvidenceCreatedRequestEvidence; + +export interface V1InformationRequestEvidenceDeletedRequest { + informationRequest: V1InformationRequestCommentCreatedRequestInformationRequest; + evidence: V1InformationRequestEvidenceCreatedRequestEvidence; +} +export const V1InformationRequestEvidenceDeletedRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + informationRequest: + V1InformationRequestCommentCreatedRequestInformationRequest, + evidence: V1InformationRequestEvidenceCreatedRequestEvidence, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.information-request.evidence.deleted", + code: 200, + }), + ), + ).annotate({ + identifier: "V1InformationRequestEvidenceDeletedRequest", + }) as any as S.Schema; + +export interface V1InformationRequestEvidenceDeletedResponse {} +export const V1InformationRequestEvidenceDeletedResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "V1InformationRequestEvidenceDeletedResponse", + }) as any as S.Schema; + +/** The status the information request was in before the change. */ +export type V1InformationRequestStatusChangedRequestInformationRequestOldStatus = + | "NEEDS_EVIDENCE" + | "READY_FOR_AUDIT" + | "AUDITOR_APPROVED" + | "AUDITOR_FLAGGED"; +export const V1InformationRequestStatusChangedRequestInformationRequestOldStatus = + /*@__PURE__*/ S.String; + +/** The status the information request is in after the change. A value of `READY_FOR_AUDIT` means the customer has submitted the request and it is ready for the auditor to review. */ +export type V1InformationRequestStatusChangedRequestInformationRequestNewStatus = + | "NEEDS_EVIDENCE" + | "READY_FOR_AUDIT" + | "AUDITOR_APPROVED" + | "AUDITOR_FLAGGED"; +export const V1InformationRequestStatusChangedRequestInformationRequestNewStatus = + /*@__PURE__*/ S.String; + +export interface V1InformationRequestStatusChangedRequestInformationRequest { + /** The unique identifier of the information request. */ + id: string; + /** The unique identifier of the audit the information request belongs to. */ + auditId: string; + /** The status the information request was in before the change. */ + oldStatus: + | V1InformationRequestStatusChangedRequestInformationRequestOldStatus + | (string & {}); + /** The status the information request is in after the change. A value of `READY_FOR_AUDIT` means the customer has submitted the request and it is ready for the auditor to review. */ + newStatus: + | V1InformationRequestStatusChangedRequestInformationRequestNewStatus + | (string & {}); +} +export const V1InformationRequestStatusChangedRequestInformationRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + auditId: S.String, + oldStatus: + V1InformationRequestStatusChangedRequestInformationRequestOldStatus, + newStatus: + V1InformationRequestStatusChangedRequestInformationRequestNewStatus, + }), + ).annotate({ + identifier: "V1InformationRequestStatusChangedRequestInformationRequest", + }) as any as S.Schema; + +export interface V1InformationRequestStatusChangedRequest { + informationRequest: V1InformationRequestStatusChangedRequestInformationRequest; +} +export const V1InformationRequestStatusChangedRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + informationRequest: + V1InformationRequestStatusChangedRequestInformationRequest, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.information-request.status-changed", + code: 200, + }), + ), +).annotate({ + identifier: "V1InformationRequestStatusChangedRequest", +}) as any as S.Schema; + +export interface V1InformationRequestStatusChangedResponse {} +export const V1InformationRequestStatusChangedResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "V1InformationRequestStatusChangedResponse", + }) as any as S.Schema; + +export interface V1QuestionnaireCreatedRequestQuestionnaire { + /** The questionnaire ID. */ + id: string; +} +export const V1QuestionnaireCreatedRequestQuestionnaire = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + }), + ).annotate({ + identifier: "V1QuestionnaireCreatedRequestQuestionnaire", + }) as any as S.Schema; + +export interface V1QuestionnaireCreatedRequest { + questionnaire: V1QuestionnaireCreatedRequestQuestionnaire; +} +export const V1QuestionnaireCreatedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaire: V1QuestionnaireCreatedRequestQuestionnaire, + }).pipe( + T.Http({ method: "POST", uri: "/v1.questionnaire.created", code: 200 }), + ), +).annotate({ + identifier: "V1QuestionnaireCreatedRequest", +}) as any as S.Schema; + +export interface V1QuestionnaireCreatedResponse {} +export const V1QuestionnaireCreatedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1QuestionnaireCreatedResponse", +}) as any as S.Schema; + +export type V1QuestionnaireDeletedRequestQuestionnaire = + V1QuestionnaireCreatedRequestQuestionnaire; +export const V1QuestionnaireDeletedRequestQuestionnaire = + V1QuestionnaireCreatedRequestQuestionnaire; + +export interface V1QuestionnaireDeletedRequest { + questionnaire: V1QuestionnaireCreatedRequestQuestionnaire; +} +export const V1QuestionnaireDeletedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaire: V1QuestionnaireCreatedRequestQuestionnaire, + }).pipe( + T.Http({ method: "POST", uri: "/v1.questionnaire.deleted", code: 200 }), + ), +).annotate({ + identifier: "V1QuestionnaireDeletedRequest", +}) as any as S.Schema; + +export interface V1QuestionnaireDeletedResponse {} +export const V1QuestionnaireDeletedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1QuestionnaireDeletedResponse", +}) as any as S.Schema; + +export interface V1QuestionnaireExportCompletedRequestQuestionnaire { + /** The unique identifier of the questionnaire. */ + id: string; +} +export const V1QuestionnaireExportCompletedRequestQuestionnaire = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + }), + ).annotate({ + identifier: "V1QuestionnaireExportCompletedRequestQuestionnaire", + }) as any as S.Schema; + +/** The export format. */ +export type V1QuestionnaireExportCompletedRequestExportFormat = + | "original" + | "csv"; +export const V1QuestionnaireExportCompletedRequestExportFormat = + /*@__PURE__*/ S.String; + +export interface V1QuestionnaireExportCompletedRequestExport { + /** The unique identifier of the export job. */ + id: string; + /** The export format. */ + format: V1QuestionnaireExportCompletedRequestExportFormat | (string & {}); + /** When the export was initiated (ISO 8601). */ + requestedAt: string; + /** When the export finished (ISO 8601). */ + completedAt: string; +} +export const V1QuestionnaireExportCompletedRequestExport = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + format: V1QuestionnaireExportCompletedRequestExportFormat, + requestedAt: S.String, + completedAt: S.String, + }), + ).annotate({ + identifier: "V1QuestionnaireExportCompletedRequestExport", + }) as any as S.Schema; + +export interface V1QuestionnaireExportCompletedRequest { + questionnaire: V1QuestionnaireExportCompletedRequestQuestionnaire; + export: V1QuestionnaireExportCompletedRequestExport; +} +export const V1QuestionnaireExportCompletedRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + questionnaire: V1QuestionnaireExportCompletedRequestQuestionnaire, + export: V1QuestionnaireExportCompletedRequestExport, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.questionnaire.export-completed", + code: 200, + }), + ), +).annotate({ + identifier: "V1QuestionnaireExportCompletedRequest", +}) as any as S.Schema; + +export interface V1QuestionnaireExportCompletedResponse {} +export const V1QuestionnaireExportCompletedResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "V1QuestionnaireExportCompletedResponse", +}) as any as S.Schema; + +export type V1QuestionnaireExportFailedRequestQuestionnaire = + V1QuestionnaireExportCompletedRequestQuestionnaire; +export const V1QuestionnaireExportFailedRequestQuestionnaire = + V1QuestionnaireExportCompletedRequestQuestionnaire; + +/** The export format. */ +export type V1QuestionnaireExportFailedRequestExportFormat = "original" | "csv"; +export const V1QuestionnaireExportFailedRequestExportFormat = + /*@__PURE__*/ S.String; + +export interface V1QuestionnaireExportFailedRequestExport { + /** The unique identifier of the export job. */ + id: string; + /** The export format. */ + format: V1QuestionnaireExportFailedRequestExportFormat | (string & {}); + /** When the export was initiated (ISO 8601). */ + requestedAt: string; + /** When the export failed (ISO 8601). */ + failedAt: string; + /** The reason for the export failure. */ + reason: string; +} +export const V1QuestionnaireExportFailedRequestExport = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String, + format: V1QuestionnaireExportFailedRequestExportFormat, + requestedAt: S.String, + failedAt: S.String, + reason: S.String, + }), +).annotate({ + identifier: "V1QuestionnaireExportFailedRequestExport", +}) as any as S.Schema; + +export interface V1QuestionnaireExportFailedRequest { + questionnaire: V1QuestionnaireExportCompletedRequestQuestionnaire; + export: V1QuestionnaireExportFailedRequestExport; +} +export const V1QuestionnaireExportFailedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaire: V1QuestionnaireExportCompletedRequestQuestionnaire, + export: V1QuestionnaireExportFailedRequestExport, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.questionnaire.export-failed", + code: 200, + }), + ), +).annotate({ + identifier: "V1QuestionnaireExportFailedRequest", +}) as any as S.Schema; + +export interface V1QuestionnaireExportFailedResponse {} +export const V1QuestionnaireExportFailedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1QuestionnaireExportFailedResponse", +}) as any as S.Schema; + +/** The new questionnaire status. */ +export type V1QuestionnaireStatusChangedRequestQuestionnaireStatus = + | "APPROVED" + | "COMPLETE" + | "ERROR" + | "IN_PROGRESS" + | "IN_REVIEW" + | "EXTRACTING_QUESTIONS" + | "QUEUED_FOR_EXTRACTION" + | "PROCESSING" + | "QUEUED_FOR_PROCESSING" + | "READY_FOR_REVIEW" + | "WAITING_ON_ANSWERS" + | "WAITING_ON_COLUMN_SELECTION" + | "WAITING_ON_COLUMN_APPROVAL" + | "QUEUED_FOR_COLUMN_DETECTION" + | "DETECTING_COLUMNS" + | "ON_HOLD" + | "NO_LONGER_NEEDED"; +export const V1QuestionnaireStatusChangedRequestQuestionnaireStatus = + /*@__PURE__*/ S.String; + +export interface V1QuestionnaireStatusChangedRequestQuestionnaire { + /** The questionnaire ID. */ + id: string; + /** The new questionnaire status. */ + status: + | V1QuestionnaireStatusChangedRequestQuestionnaireStatus + | (string & {}); +} +export const V1QuestionnaireStatusChangedRequestQuestionnaire = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + status: V1QuestionnaireStatusChangedRequestQuestionnaireStatus, + }), + ).annotate({ + identifier: "V1QuestionnaireStatusChangedRequestQuestionnaire", + }) as any as S.Schema; + +export interface V1QuestionnaireStatusChangedRequest { + questionnaire: V1QuestionnaireStatusChangedRequestQuestionnaire; +} +export const V1QuestionnaireStatusChangedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + questionnaire: V1QuestionnaireStatusChangedRequestQuestionnaire, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.questionnaire.status-changed", + code: 200, + }), + ), +).annotate({ + identifier: "V1QuestionnaireStatusChangedRequest", +}) as any as S.Schema; + +export interface V1QuestionnaireStatusChangedResponse {} +export const V1QuestionnaireStatusChangedResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "V1QuestionnaireStatusChangedResponse", +}) as any as S.Schema; + +export interface V1TrustCenterAccessRequestApprovedRequestTrustCenter { + /** The Trust Center slug ID. */ + slugId: string; +} +export const V1TrustCenterAccessRequestApprovedRequestTrustCenter = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + slugId: S.String, + }), + ).annotate({ + identifier: "V1TrustCenterAccessRequestApprovedRequestTrustCenter", + }) as any as S.Schema; + +export interface V1TrustCenterAccessRequestApprovedRequestAccessRequest { + /** The access request ID. */ + id: string; +} +export const V1TrustCenterAccessRequestApprovedRequestAccessRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + }), + ).annotate({ + identifier: "V1TrustCenterAccessRequestApprovedRequestAccessRequest", + }) as any as S.Schema; + +export interface V1TrustCenterAccessRequestApprovedRequestViewer { + /** The viewer ID granted access. */ + id: string; +} +export const V1TrustCenterAccessRequestApprovedRequestViewer = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + id: S.String, + }), + ).annotate({ + identifier: "V1TrustCenterAccessRequestApprovedRequestViewer", + }) as any as S.Schema; + +export interface V1TrustCenterAccessRequestApprovedRequest { + trustCenter: V1TrustCenterAccessRequestApprovedRequestTrustCenter; + accessRequest: V1TrustCenterAccessRequestApprovedRequestAccessRequest; + viewer: V1TrustCenterAccessRequestApprovedRequestViewer; +} +export const V1TrustCenterAccessRequestApprovedRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + trustCenter: V1TrustCenterAccessRequestApprovedRequestTrustCenter, + accessRequest: V1TrustCenterAccessRequestApprovedRequestAccessRequest, + viewer: V1TrustCenterAccessRequestApprovedRequestViewer, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.trust-center.access-request.approved", + code: 200, + }), + ), + ).annotate({ + identifier: "V1TrustCenterAccessRequestApprovedRequest", + }) as any as S.Schema; + +export interface V1TrustCenterAccessRequestApprovedResponse {} +export const V1TrustCenterAccessRequestApprovedResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "V1TrustCenterAccessRequestApprovedResponse", + }) as any as S.Schema; + +export type V1TrustCenterAccessRequestDeniedRequestTrustCenter = + V1TrustCenterAccessRequestApprovedRequestTrustCenter; +export const V1TrustCenterAccessRequestDeniedRequestTrustCenter = + V1TrustCenterAccessRequestApprovedRequestTrustCenter; + +export type V1TrustCenterAccessRequestDeniedRequestAccessRequest = + V1TrustCenterAccessRequestApprovedRequestAccessRequest; +export const V1TrustCenterAccessRequestDeniedRequestAccessRequest = + V1TrustCenterAccessRequestApprovedRequestAccessRequest; + +export interface V1TrustCenterAccessRequestDeniedRequest { + trustCenter: V1TrustCenterAccessRequestApprovedRequestTrustCenter; + accessRequest: V1TrustCenterAccessRequestApprovedRequestAccessRequest; +} +export const V1TrustCenterAccessRequestDeniedRequest = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + trustCenter: V1TrustCenterAccessRequestApprovedRequestTrustCenter, + accessRequest: V1TrustCenterAccessRequestApprovedRequestAccessRequest, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.trust-center.access-request.denied", + code: 200, + }), + ), +).annotate({ + identifier: "V1TrustCenterAccessRequestDeniedRequest", +}) as any as S.Schema; + +export interface V1TrustCenterAccessRequestDeniedResponse {} +export const V1TrustCenterAccessRequestDeniedResponse = /*@__PURE__*/ S.suspend( + () => S.Struct({}), +).annotate({ + identifier: "V1TrustCenterAccessRequestDeniedResponse", +}) as any as S.Schema; + +export type V1TrustCenterAccessRequestReceivedRequestTrustCenter = + V1TrustCenterAccessRequestApprovedRequestTrustCenter; +export const V1TrustCenterAccessRequestReceivedRequestTrustCenter = + V1TrustCenterAccessRequestApprovedRequestTrustCenter; + +export type V1TrustCenterAccessRequestReceivedRequestAccessRequest = + V1TrustCenterAccessRequestApprovedRequestAccessRequest; +export const V1TrustCenterAccessRequestReceivedRequestAccessRequest = + V1TrustCenterAccessRequestApprovedRequestAccessRequest; + +export interface V1TrustCenterAccessRequestReceivedRequest { + trustCenter: V1TrustCenterAccessRequestApprovedRequestTrustCenter; + accessRequest: V1TrustCenterAccessRequestApprovedRequestAccessRequest; +} +export const V1TrustCenterAccessRequestReceivedRequest = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + trustCenter: V1TrustCenterAccessRequestApprovedRequestTrustCenter, + accessRequest: V1TrustCenterAccessRequestApprovedRequestAccessRequest, + }).pipe( + T.Http({ + method: "POST", + uri: "/v1.trust-center.access-request.received", + code: 200, + }), + ), + ).annotate({ + identifier: "V1TrustCenterAccessRequestReceivedRequest", + }) as any as S.Schema; + +export interface V1TrustCenterAccessRequestReceivedResponse {} +export const V1TrustCenterAccessRequestReceivedResponse = + /*@__PURE__*/ S.suspend(() => S.Struct({})).annotate({ + identifier: "V1TrustCenterAccessRequestReceivedResponse", + }) as any as S.Schema; + +/** The vendor decision status. */ +export type V1VendorDecisionCreatedRequestVendorDecisionStatus = + | "APPROVED" + | "CONDITIONALLY_APPROVED" + | "NOT_APPROVED"; +export const V1VendorDecisionCreatedRequestVendorDecisionStatus = + /*@__PURE__*/ S.String; + +export interface V1VendorDecisionCreatedRequestVendorDecision { + /** The vendor decision status. */ + status: V1VendorDecisionCreatedRequestVendorDecisionStatus | (string & {}); + /** When the decision was last updated (ISO 8601). */ + lastUpdatedAt: string; + /** Optional comments on the decision. */ + comments?: string; +} +export const V1VendorDecisionCreatedRequestVendorDecision = + /*@__PURE__*/ S.suspend(() => + S.Struct({ + status: V1VendorDecisionCreatedRequestVendorDecisionStatus, + lastUpdatedAt: S.String, + comments: S.optional(S.String), + }), + ).annotate({ + identifier: "V1VendorDecisionCreatedRequestVendorDecision", + }) as any as S.Schema; + +export interface V1VendorDecisionCreatedRequestVendor { + /** The vendor ID. */ + id: string; + decision: V1VendorDecisionCreatedRequestVendorDecision; +} +export const V1VendorDecisionCreatedRequestVendor = /*@__PURE__*/ S.suspend( + () => + S.Struct({ + id: S.String, + decision: V1VendorDecisionCreatedRequestVendorDecision, + }), +).annotate({ + identifier: "V1VendorDecisionCreatedRequestVendor", +}) as any as S.Schema; + +export interface V1VendorDecisionCreatedRequest { + vendor: V1VendorDecisionCreatedRequestVendor; +} +export const V1VendorDecisionCreatedRequest = /*@__PURE__*/ S.suspend(() => + S.Struct({ + vendor: V1VendorDecisionCreatedRequestVendor, + }).pipe( + T.Http({ method: "POST", uri: "/v1.vendor.decision.created", code: 200 }), + ), +).annotate({ + identifier: "V1VendorDecisionCreatedRequest", +}) as any as S.Schema; + +export interface V1VendorDecisionCreatedResponse {} +export const V1VendorDecisionCreatedResponse = /*@__PURE__*/ S.suspend(() => + S.Struct({}), +).annotate({ + identifier: "V1VendorDecisionCreatedResponse", +}) as any as S.Schema; + +export type V1ControlCommentCreatedError = VantaOpError; +/** Control comment created An external comment was created on an audit control. Fires once per comment. This event is delivered only to [Audit Partner](/reference/audits/overview) accounts and is gated by the early-access `audit_control_comment_webhook` feature — reach out to your Vanta contact to enable it. The payload contains only identifiers. Fetch the comment body from `GET /v1/audits/{auditId}/controls/{controlId}/comments`. */ +export const v1ControlCommentCreated: API.OperationMethod< + V1ControlCommentCreatedRequest, + V1ControlCommentCreatedResponse, + V1ControlCommentCreatedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1ControlCommentCreatedRequest, + output: V1ControlCommentCreatedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1ControlCommentDeletedError = VantaOpError; +/** Control comment deleted An external comment was deleted from an audit control. Fires once per comment deletion. This event is delivered only to [Audit Partner](/reference/audits/overview) accounts and is gated by the early-access `audit_control_comment_webhook` feature — reach out to your Vanta contact to enable it. The payload contains only identifiers. The deleted comment no longer appears in `GET /v1/audits/{auditId}/controls/{controlId}/comments`. */ +export const v1ControlCommentDeleted: API.OperationMethod< + V1ControlCommentDeletedRequest, + V1ControlCommentDeletedResponse, + V1ControlCommentDeletedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1ControlCommentDeletedRequest, + output: V1ControlCommentDeletedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1ControlCommentUpdatedError = VantaOpError; +/** Control comment updated An external comment on an audit control was updated. Fires once per comment update. This event is delivered only to [Audit Partner](/reference/audits/overview) accounts and is gated by the early-access `audit_control_comment_webhook` feature — reach out to your Vanta contact to enable it. The payload contains only identifiers. Fetch the current comment body from `GET /v1/audits/{auditId}/controls/{controlId}/comments`. */ +export const v1ControlCommentUpdated: API.OperationMethod< + V1ControlCommentUpdatedRequest, + V1ControlCommentUpdatedResponse, + V1ControlCommentUpdatedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1ControlCommentUpdatedRequest, + output: V1ControlCommentUpdatedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1EvidenceCommentCreatedError = VantaOpError; +/** Evidence comment created Fires when a comment is created on an audit evidence item. Fires once per comment. */ +export const v1EvidenceCommentCreated: API.OperationMethod< + V1EvidenceCommentCreatedRequest, + V1EvidenceCommentCreatedResponse, + V1EvidenceCommentCreatedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1EvidenceCommentCreatedRequest, + output: V1EvidenceCommentCreatedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1EvidenceCommentDeletedError = VantaOpError; +/** Evidence comment deleted Fires when a comment is deleted from an audit evidence item. Fires once per comment deletion. */ +export const v1EvidenceCommentDeleted: API.OperationMethod< + V1EvidenceCommentDeletedRequest, + V1EvidenceCommentDeletedResponse, + V1EvidenceCommentDeletedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1EvidenceCommentDeletedRequest, + output: V1EvidenceCommentDeletedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1EvidenceCommentUpdatedError = VantaOpError; +/** Evidence comment updated Fires when a comment on an audit evidence item is updated. Fires once per comment update. */ +export const v1EvidenceCommentUpdated: API.OperationMethod< + V1EvidenceCommentUpdatedRequest, + V1EvidenceCommentUpdatedResponse, + V1EvidenceCommentUpdatedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1EvidenceCommentUpdatedRequest, + output: V1EvidenceCommentUpdatedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1EvidenceCreatedError = VantaOpError; +/** Evidence created Fires when an audit evidence item comes into scope for an audit, including when a previously removed item re-enters scope after soft-delete. Evidence items are derived from the customer's compliance program, so this event means "a new item is now in scope for this audit", not "a customer uploaded a file". A brand-new item starts in `NOT_READY_FOR_AUDIT` with no files; wait for [`v1.evidence.status-changed`](/reference/webhooks/v1-evidence-status-changed) before requesting URLs. A re-scoped item retains its previous status and files. It may already be in `READY_FOR_AUDIT` or another state, and no follow-up status-change event is guaranteed. **This event does not replace the initial sync.** Items can come into scope from the moment the audit exists, which is normally before your access to the audit begins, and events from before that point are not delivered or replayed. Always perform a full traversal of `GET /audits/{auditId}/evidence` when you first pick up an audit, then rely on this event for items that come into scope afterwards. */ +export const v1EvidenceCreated: API.OperationMethod< + V1EvidenceCreatedRequest, + V1EvidenceCreatedResponse, + V1EvidenceCreatedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1EvidenceCreatedRequest, + output: V1EvidenceCreatedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1EvidenceDeletedError = VantaOpError; +/** Evidence deleted Fires when an audit evidence item leaves scope for an audit. Fires once per item. The item is soft-deleted rather than removed: `GET /audits/{auditId}/evidence` still returns it, with a non-null `deletionDate`. Stop requesting URLs for the item. If the item later returns to scope, Vanta emits a fresh [`v1.evidence.created`](/reference/webhooks/v1-evidence-created) event and clears `deletionDate`. */ +export const v1EvidenceDeleted: API.OperationMethod< + V1EvidenceDeletedRequest, + V1EvidenceDeletedResponse, + V1EvidenceDeletedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1EvidenceDeletedRequest, + output: V1EvidenceDeletedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1EvidenceStatusChangedError = VantaOpError; +/** Evidence status changed Fires when an existing audit evidence item changes status. `oldStatus` and `newStatus` always describe a transition of an item that already exists. See [`v1.evidence.created`](/reference/webhooks/v1-evidence-created) for the event that fires when an item first comes into scope for an audit. **Ready-to-review signal:** a `newStatus` of `READY_FOR_AUDIT` means the customer has provided evidence for the item and it is ready for the auditor to review. **When it fires:** once per evidence item, each time its status changes. Status can also change on its own as the customer's compliance posture changes, so an item may move from `READY_FOR_AUDIT` back to `NOT_READY_FOR_AUDIT` without an explicit auditor action. `oldStatus` and `newStatus` can be equal. A newly detected document re-fires this event with both fields set to the item's current status (for example, `READY_FOR_AUDIT`, `ACCEPTED`, or `FLAGGED`). Treat that as a signal that the item's files may have changed and re-fetch its URLs. Do not discard events where the status is unchanged. **Status values:** - `NOT_READY_FOR_AUDIT` — the item is not yet ready for the auditor; required evidence is missing or does not meet the requirement. - `READY_FOR_AUDIT` — the customer has provided the evidence and it is ready for the auditor to review. - `ACCEPTED` — the auditor reviewed the item and accepted it. - `FLAGGED` — the auditor reviewed the item and flagged an issue for the customer to address; once the customer addresses it the item returns to `READY_FOR_AUDIT`. - `NA` — the item is not applicable to this audit. A typical lifecycle is `NOT_READY_FOR_AUDIT → READY_FOR_AUDIT → ACCEPTED` (or `→ FLAGGED`, which returns to `READY_FOR_AUDIT` once the customer addresses the issue). `INITIALIZED` is an internal status and is never delivered — `oldStatus` and `newStatus` are always one of the values above. */ +export const v1EvidenceStatusChanged: API.OperationMethod< + V1EvidenceStatusChangedRequest, + V1EvidenceStatusChangedResponse, + V1EvidenceStatusChangedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1EvidenceStatusChangedRequest, + output: V1EvidenceStatusChangedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1InformationRequestCommentCreatedError = VantaOpError; +/** Information request comment created Fires when a comment is created on an information request. Fires once per comment. The payload contains only identifiers; fetch the comment body from the information request comments endpoint (`GET /v1/audits/{auditId}/information-requests/{requestId}/comments`). */ +export const v1InformationRequestCommentCreated: API.OperationMethod< + V1InformationRequestCommentCreatedRequest, + V1InformationRequestCommentCreatedResponse, + V1InformationRequestCommentCreatedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1InformationRequestCommentCreatedRequest, + output: V1InformationRequestCommentCreatedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1InformationRequestCommentDeletedError = VantaOpError; +/** Information request comment deleted Fires when a comment is deleted from an information request. Fires once per comment deletion. The payload contains only identifiers; the deleted comment is still returned by the information request comments endpoint (`GET /v1/audits/{auditId}/information-requests/{requestId}/comments`) as a soft-deleted record with a non-null `deletionDate`. */ +export const v1InformationRequestCommentDeleted: API.OperationMethod< + V1InformationRequestCommentDeletedRequest, + V1InformationRequestCommentDeletedResponse, + V1InformationRequestCommentDeletedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1InformationRequestCommentDeletedRequest, + output: V1InformationRequestCommentDeletedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1InformationRequestCommentUpdatedError = VantaOpError; +/** Information request comment updated Fires when a comment on an information request is updated. Fires once per comment update. The payload contains only identifiers; fetch the current comment body from the information request comments endpoint (`GET /v1/audits/{auditId}/information-requests/{requestId}/comments`). */ +export const v1InformationRequestCommentUpdated: API.OperationMethod< + V1InformationRequestCommentUpdatedRequest, + V1InformationRequestCommentUpdatedResponse, + V1InformationRequestCommentUpdatedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1InformationRequestCommentUpdatedRequest, + output: V1InformationRequestCommentUpdatedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1InformationRequestEvidenceCreatedError = VantaOpError; +/** Information request evidence created Fires when a piece of evidence is added to an information request. Fires once per piece of evidence — if several pieces are added in a single action, you receive one event per piece. These `v1.information-request.evidence.*` events belong to the Information Request experience and are unrelated to the `v1.evidence.*` classic audit evidence events. */ +export const v1InformationRequestEvidenceCreated: API.OperationMethod< + V1InformationRequestEvidenceCreatedRequest, + V1InformationRequestEvidenceCreatedResponse, + V1InformationRequestEvidenceCreatedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1InformationRequestEvidenceCreatedRequest, + output: V1InformationRequestEvidenceCreatedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1InformationRequestEvidenceDeletedError = VantaOpError; +/** Information request evidence deleted Fires when a piece of evidence is removed from an information request. Fires once per piece of evidence removed. These `v1.information-request.evidence.*` events belong to the Information Request experience and are unrelated to the `v1.evidence.*` classic audit evidence events. */ +export const v1InformationRequestEvidenceDeleted: API.OperationMethod< + V1InformationRequestEvidenceDeletedRequest, + V1InformationRequestEvidenceDeletedResponse, + V1InformationRequestEvidenceDeletedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1InformationRequestEvidenceDeletedRequest, + output: V1InformationRequestEvidenceDeletedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1InformationRequestStatusChangedError = VantaOpError; +/** Information request status changed Fires when an information request's approval status changes. This is a status-change event. **Ready-to-review signal:** a `newStatus` of `READY_FOR_AUDIT` means the customer has submitted the information request and it is ready for the auditor to review. **When it fires:** once per information request, each time its status changes between the values below. Not every status transition emits an event. **Status values:** - `NEEDS_EVIDENCE` — the request still needs work from the customer; it is not yet ready for the auditor. - `READY_FOR_AUDIT` — the customer has submitted the request and it is ready for the auditor to review. - `AUDITOR_APPROVED` — the auditor reviewed the request and approved it. - `AUDITOR_FLAGGED` — the auditor flagged the request for the customer to address. A typical lifecycle is `NEEDS_EVIDENCE → READY_FOR_AUDIT → AUDITOR_APPROVED` (or `→ AUDITOR_FLAGGED`). A request can also move from `READY_FOR_AUDIT` back to `NEEDS_EVIDENCE` when the customer takes it back to continue working on it. */ +export const v1InformationRequestStatusChanged: API.OperationMethod< + V1InformationRequestStatusChangedRequest, + V1InformationRequestStatusChangedResponse, + V1InformationRequestStatusChangedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1InformationRequestStatusChangedRequest, + output: V1InformationRequestStatusChangedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1QuestionnaireCreatedError = VantaOpError; +/** Questionnaire created A questionnaire was created. */ +export const v1QuestionnaireCreated: API.OperationMethod< + V1QuestionnaireCreatedRequest, + V1QuestionnaireCreatedResponse, + V1QuestionnaireCreatedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1QuestionnaireCreatedRequest, + output: V1QuestionnaireCreatedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1QuestionnaireDeletedError = VantaOpError; +/** Questionnaire deleted A questionnaire was deleted. */ +export const v1QuestionnaireDeleted: API.OperationMethod< + V1QuestionnaireDeletedRequest, + V1QuestionnaireDeletedResponse, + V1QuestionnaireDeletedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1QuestionnaireDeletedRequest, + output: V1QuestionnaireDeletedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1QuestionnaireExportCompletedError = VantaOpError; +/** Questionnaire export completed A questionnaire export has completed successfully. */ +export const v1QuestionnaireExportCompleted: API.OperationMethod< + V1QuestionnaireExportCompletedRequest, + V1QuestionnaireExportCompletedResponse, + V1QuestionnaireExportCompletedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1QuestionnaireExportCompletedRequest, + output: V1QuestionnaireExportCompletedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1QuestionnaireExportFailedError = VantaOpError; +/** Questionnaire export failed A questionnaire export has failed. */ +export const v1QuestionnaireExportFailed: API.OperationMethod< + V1QuestionnaireExportFailedRequest, + V1QuestionnaireExportFailedResponse, + V1QuestionnaireExportFailedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1QuestionnaireExportFailedRequest, + output: V1QuestionnaireExportFailedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1QuestionnaireStatusChangedError = VantaOpError; +/** Questionnaire status changed A questionnaire status was changed. */ +export const v1QuestionnaireStatusChanged: API.OperationMethod< + V1QuestionnaireStatusChangedRequest, + V1QuestionnaireStatusChangedResponse, + V1QuestionnaireStatusChangedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1QuestionnaireStatusChangedRequest, + output: V1QuestionnaireStatusChangedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1TrustCenterAccessRequestApprovedError = VantaOpError; +/** Trust Center access request approved A Trust Center access request was approved. */ +export const v1TrustCenterAccessRequestApproved: API.OperationMethod< + V1TrustCenterAccessRequestApprovedRequest, + V1TrustCenterAccessRequestApprovedResponse, + V1TrustCenterAccessRequestApprovedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1TrustCenterAccessRequestApprovedRequest, + output: V1TrustCenterAccessRequestApprovedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1TrustCenterAccessRequestDeniedError = VantaOpError; +/** Trust Center access request denied A Trust Center access request was denied. */ +export const v1TrustCenterAccessRequestDenied: API.OperationMethod< + V1TrustCenterAccessRequestDeniedRequest, + V1TrustCenterAccessRequestDeniedResponse, + V1TrustCenterAccessRequestDeniedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1TrustCenterAccessRequestDeniedRequest, + output: V1TrustCenterAccessRequestDeniedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1TrustCenterAccessRequestReceivedError = VantaOpError; +/** Trust Center access request received A Trust Center access request was received. */ +export const v1TrustCenterAccessRequestReceived: API.OperationMethod< + V1TrustCenterAccessRequestReceivedRequest, + V1TrustCenterAccessRequestReceivedResponse, + V1TrustCenterAccessRequestReceivedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1TrustCenterAccessRequestReceivedRequest, + output: V1TrustCenterAccessRequestReceivedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); + +export type V1VendorDecisionCreatedError = VantaOpError; +/** Vendor decision created A new vendor decision has been created. */ +export const v1VendorDecisionCreated: API.OperationMethod< + V1VendorDecisionCreatedRequest, + V1VendorDecisionCreatedResponse, + V1VendorDecisionCreatedError, + VantaOpContext +> = /*@__PURE__*/ API.make(() => ({ + input: V1VendorDecisionCreatedRequest, + output: V1VendorDecisionCreatedResponse, + errors: [UnknownVantaError], + protocol: VantaProtocol, + retry: Retry.Retry, +})); diff --git a/packages/vanta/src/traits.ts b/packages/vanta/src/traits.ts new file mode 100644 index 000000000..c5ce6cd39 --- /dev/null +++ b/packages/vanta/src/traits.ts @@ -0,0 +1,44 @@ +/** + * Vanta SDK trait surface — hand-written. + * + * Re-exports the generic protocol traits from core (so generated operations + * import everything from one place). Vanta has no envelope of its own; the + * REST-protocol traits (SensitiveValue / RawResponse) come from + * `core/protocol-rest`. + */ +export { + Body, + Header, + Query, + Label, + Http, + ResponseCode, + HttpBody, + FormDataFile, + KeyDictionary, + UnionCases, + applyErrorMatchers, + getErrorMatchers, + type HttpTrait, + type ErrorMatcher, + bodySymbol, + headerSymbol, + querySymbol, + labelSymbol, + httpSymbol, + responseCodeSymbol, + httpBodySymbol, + formDataFileSymbol, + keyDictionarySymbol, + unionCasesSymbol, + errorMatchersSymbol, +} from "@distilled.cloud/core/trait"; + +export { + SensitiveValue, + RawResponse, + RawResponseRoot, + sensitiveValueSymbol, + rawResponseSymbol, + rawResponseRootSymbol, +} from "@distilled.cloud/core/protocol-rest"; diff --git a/packages/vanta/tsconfig.json b/packages/vanta/tsconfig.json new file mode 100644 index 000000000..56b16e575 --- /dev/null +++ b/packages/vanta/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["src/**/*.ts"], + "compilerOptions": { + "composite": true, + "noEmit": false, + "outDir": "./lib", + "rootDir": "./src", + "paths": { + "@distilled.cloud/core/*": ["../core/src/*"] + } + }, + "references": [{ "path": "../core" }] +} diff --git a/packages/vanta/tsconfig.scripts.json b/packages/vanta/tsconfig.scripts.json new file mode 100644 index 000000000..be37c3474 --- /dev/null +++ b/packages/vanta/tsconfig.scripts.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["scripts/**/*.ts"], + "compilerOptions": { + "composite": true, + "noEmit": false, + "emitDeclarationOnly": true, + "outDir": "./.scripts-types", + "rootDir": "./scripts", + "tsBuildInfoFile": "./.scripts-types/tsconfig.scripts.tsbuildinfo", + // Resolve @distilled.cloud/core/* to src (the bun condition), matching + // how the scripts actually run under bun. + "rewriteRelativeImportExtensions": false, + "customConditions": ["bun"] + }, + "references": [{ "path": "../core" }] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a5b177f1..2c2b0dea5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -598,6 +598,25 @@ importers: specifier: catalog:tooling version: 26.4.0 + packages/vanta: + dependencies: + '@distilled.cloud/core': + specifier: workspace:* + version: link:../core + effect: + specifier: catalog:effect + version: 4.0.0-rc.112 + devDependencies: + '@effect/platform-bun': + specifier: catalog:effect + version: 4.0.0-rc.112(effect@4.0.0-rc.112) + '@types/bun': + specifier: catalog:tooling + version: 1.4.0 + '@types/node': + specifier: catalog:tooling + version: 26.4.0 + packages/vercel: dependencies: '@distilled.cloud/core': diff --git a/stacks/distilled-submodules/SpecRepos.ts b/stacks/distilled-submodules/SpecRepos.ts index 97e991a7b..80250e40c 100644 --- a/stacks/distilled-submodules/SpecRepos.ts +++ b/stacks/distilled-submodules/SpecRepos.ts @@ -73,6 +73,7 @@ export const SPEC_REPOS: readonly SpecRepo[] = [ { package: "supabase" }, { package: "turso" }, { package: "typesense" }, + { package: "vanta" }, { package: "vercel" }, { package: "whop" }, { package: "workos" }, diff --git a/stacks/distilled-submodules/spec-repos/vanta/fetch-specs.ts b/stacks/distilled-submodules/spec-repos/vanta/fetch-specs.ts new file mode 100644 index 000000000..c67179577 --- /dev/null +++ b/stacks/distilled-submodules/spec-repos/vanta/fetch-specs.ts @@ -0,0 +1,119 @@ +#!/usr/bin/env bun +/** + * Mirrors Vanta's OpenAPI specs into ../specs/. + * + * Vanta publishes four first-party OpenAPI 3 documents on + * developer.vanta.com. Each is downloaded from a stable URL, validated, and + * written deterministically. Vendor docs are snapshotted alongside them so + * convert never crawls the live developer site. + * + * Usage: + * bun run fetch-specs.ts + * + * Specs are saved to: + * ../specs/.json + * ../specs/docs/... + */ + +import { mkdirSync } from "fs"; + +const BASE = "https://developer.vanta.com"; + +/** + * OpenAPI documents the distilled vanta generator reads. Ignore + * `/api-reference/openapi.json` — that is a Mintlify plant-store placeholder. + */ +const OPENAPI_FILES = [ + "manage-vanta.json", + "auditor-api.json", + "build-integrations.json", + "webhooks.json", +] as const; + +interface DocFile { + /** Absolute URL to snapshot. */ + url: string; + /** Path within ../specs/ to write it to. */ + output: string; +} + +/** First-party developer docs — snapshot, never crawl at generate time. */ +const DOCS: DocFile[] = [ + { + url: `${BASE}/reference/overview`, + output: "docs/overview.html", + }, + { + url: `${BASE}/docs/concepts/authentication`, + output: "docs/authentication.html", + }, + { + url: `${BASE}/docs/vanta-api-overview`, + output: "docs/vanta-api-overview.html", + }, + { + url: `${BASE}/reference/manage-vanta/overview`, + output: "docs/manage-vanta.html", + }, +]; + +const SPECS_DIR = "../specs"; + +mkdirSync(`${SPECS_DIR}/docs`, { recursive: true }); + +const USER_AGENT = "distilled.cloud-vanta-spec-mirror"; + +async function fetchOk(url: string): Promise { + const response = await fetch(url, { + headers: { "user-agent": USER_AGENT, accept: "*/*" }, + }); + if (!response.ok) { + throw new Error( + `Failed to fetch ${url}: ${response.status} ${response.statusText}`, + ); + } + return response; +} + +async function main() { + for (const file of OPENAPI_FILES) { + const url = `${BASE}/reference/${file}`; + console.log(`Fetching ${url}...`); + const spec = (await (await fetchOk(url)).json()) as Record; + + // Fail here rather than three steps later in the generator: a login page + // or a gutted response is still valid JSON, but it is not an OpenAPI + // document. + if (typeof spec.openapi !== "string" || spec.paths === undefined) { + throw new Error( + `${url} returned JSON without \`openapi\`/\`paths\` — not an OpenAPI document`, + ); + } + + const outputPath = `${SPECS_DIR}/${file}`; + console.log( + `Writing ${outputPath} (OpenAPI ${spec.openapi}, ${Object.keys(spec.paths as object).length} paths)...`, + ); + // 2-space indent + trailing newline so a whitespace-only change upstream + // produces no diff. + await Bun.write(outputPath, JSON.stringify(spec, null, 2) + "\n"); + } + + for (const doc of DOCS) { + console.log(`Fetching ${doc.url}...`); + const text = await (await fetchOk(doc.url)).text(); + if (text.trim().length === 0) { + throw new Error(`${doc.url} returned an empty document`); + } + const outputPath = `${SPECS_DIR}/${doc.output}`; + await Bun.write(outputPath, text.endsWith("\n") ? text : `${text}\n`); + console.log(`Writing ${outputPath}...`); + } + + console.log("Done!"); +} + +main().catch((err) => { + console.error("Fatal error:", err); + process.exit(1); +}); diff --git a/stacks/distilled-submodules/spec-repos/vanta/package.json b/stacks/distilled-submodules/spec-repos/vanta/package.json new file mode 100644 index 000000000..e18d26a07 --- /dev/null +++ b/stacks/distilled-submodules/spec-repos/vanta/package.json @@ -0,0 +1,27 @@ +{ + "name": "vanta-spec", + "private": true, + "type": "module", + "scripts": { + "fetch-specs": "bun run fetch-specs.ts", + "tsc": "tsc --noEmit", + "lint": "oxlint .", + "fmt": "oxfmt --write .", + "fmt:check": "oxfmt --check .", + "check": "bun run tsc && bun run lint && bun run fmt:check" + }, + "workspaces": { + "catalog": { + "@typescript/native-preview": "latest", + "oxfmt": "0.21.0", + "oxlint": "1.36.0" + } + }, + "dependencies": { + "@typescript/native-preview": "catalog:" + }, + "devDependencies": { + "oxfmt": "catalog:", + "oxlint": "catalog:" + } +} diff --git a/stacks/distilled-submodules/spec-repos/vanta/readme.md b/stacks/distilled-submodules/spec-repos/vanta/readme.md new file mode 100644 index 000000000..c7f08fee5 --- /dev/null +++ b/stacks/distilled-submodules/spec-repos/vanta/readme.md @@ -0,0 +1,37 @@ +# spec-mirror-vanta + +A git mirror of Vanta's [OpenAPI specs](https://developer.vanta.com/reference/overview). +The four first-party documents are fetched from `developer.vanta.com` and committed as +JSON so the repo serves as a versioned snapshot: + +- `specs/manage-vanta.json` +- `specs/auditor-api.json` +- `specs/build-integrations.json` +- `specs/webhooks.json` + +Vendor docs are snapshotted under `specs/docs/` so convert never crawls the live +developer site. The Mintlify plant-store placeholder at +`/api-reference/openapi.json` is not mirrored. + +The mirror is updated every 24 hours and is designed to be used as a stable git submodule. + +## Usage as a submodule + +```sh +git submodule add https://github.com/distilled-mirror/spec-mirror-vanta.git +``` + +## Updating specs + +From `.meta/`: + +```sh +bun install +bun run fetch-specs +``` + +--- + +This repository is managed by the `distilled-submodules` Alchemy stack in +[alchemy-run/distilled](https://github.com/alchemy-run/distilled) (`stacks/distilled-submodules`). +Its scaffolding is generated — edit it there, not here. diff --git a/tsconfig.json b/tsconfig.json index 7289e61be..3f1ee4815 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,60 +1,176 @@ { "files": [], "references": [ - { "path": "./packages/core/tsconfig.json" }, - { "path": "./packages/cloudflare/tsconfig.json" }, - { "path": "./packages/cloudflare/tsconfig.scripts.json" }, - { "path": "./packages/aws/tsconfig.json" }, - { "path": "./packages/aws/tsconfig.scripts.json" }, - { "path": "./packages/axiom/tsconfig.json" }, - { "path": "./packages/axiom/tsconfig.scripts.json" }, - { "path": "./packages/azure/tsconfig.json" }, - { "path": "./packages/azure/tsconfig.scripts.json" }, - { "path": "./packages/coinbase/tsconfig.json" }, - { "path": "./packages/coinbase/tsconfig.scripts.json" }, - { "path": "./packages/discord/tsconfig.json" }, - { "path": "./packages/discord/tsconfig.scripts.json" }, - { "path": "./packages/expo-eas/tsconfig.json" }, - { "path": "./packages/expo-eas/tsconfig.scripts.json" }, - { "path": "./packages/fly-io/tsconfig.json" }, - { "path": "./packages/fly-io/tsconfig.scripts.json" }, - { "path": "./packages/gcp/tsconfig.json" }, - { "path": "./packages/gcp/tsconfig.scripts.json" }, - { "path": "./packages/github/tsconfig.json" }, - { "path": "./packages/github/tsconfig.scripts.json" }, - { "path": "./packages/hetzner/tsconfig.json" }, - { "path": "./packages/hetzner/tsconfig.scripts.json" }, - { "path": "./packages/huggingface/tsconfig.json" }, - { "path": "./packages/huggingface/tsconfig.scripts.json" }, - { "path": "./packages/kubernetes/tsconfig.json" }, - { "path": "./packages/kubernetes/tsconfig.scripts.json" }, - { "path": "./packages/mongodb-atlas/tsconfig.json" }, - { "path": "./packages/mongodb-atlas/tsconfig.scripts.json" }, - { "path": "./packages/modal/tsconfig.json" }, - { "path": "./packages/modal/tsconfig.scripts.json" }, - { "path": "./packages/neon/tsconfig.json" }, - { "path": "./packages/neon/tsconfig.scripts.json" }, - { "path": "./packages/planetscale/tsconfig.json" }, - { "path": "./packages/planetscale/tsconfig.scripts.json" }, - { "path": "./packages/posthog/tsconfig.json" }, - { "path": "./packages/posthog/tsconfig.scripts.json" }, - { "path": "./packages/prisma-postgres/tsconfig.json" }, - { "path": "./packages/prisma-postgres/tsconfig.scripts.json" }, - { "path": "./packages/railway/tsconfig.json" }, - { "path": "./packages/railway/tsconfig.scripts.json" }, - { "path": "./packages/stripe/tsconfig.json" }, - { "path": "./packages/stripe/tsconfig.scripts.json" }, - { "path": "./packages/supabase/tsconfig.json" }, - { "path": "./packages/supabase/tsconfig.scripts.json" }, - { "path": "./packages/turso/tsconfig.json" }, - { "path": "./packages/turso/tsconfig.scripts.json" }, - { "path": "./packages/typesense/tsconfig.json" }, - { "path": "./packages/typesense/tsconfig.scripts.json" }, - { "path": "./packages/vercel/tsconfig.json" }, - { "path": "./packages/vercel/tsconfig.scripts.json" }, - { "path": "./packages/whop/tsconfig.json" }, - { "path": "./packages/whop/tsconfig.scripts.json" }, - { "path": "./packages/workos/tsconfig.json" }, - { "path": "./packages/workos/tsconfig.scripts.json" } + { + "path": "./packages/core/tsconfig.json" + }, + { + "path": "./packages/cloudflare/tsconfig.json" + }, + { + "path": "./packages/cloudflare/tsconfig.scripts.json" + }, + { + "path": "./packages/aws/tsconfig.json" + }, + { + "path": "./packages/aws/tsconfig.scripts.json" + }, + { + "path": "./packages/axiom/tsconfig.json" + }, + { + "path": "./packages/axiom/tsconfig.scripts.json" + }, + { + "path": "./packages/azure/tsconfig.json" + }, + { + "path": "./packages/azure/tsconfig.scripts.json" + }, + { + "path": "./packages/coinbase/tsconfig.json" + }, + { + "path": "./packages/coinbase/tsconfig.scripts.json" + }, + { + "path": "./packages/discord/tsconfig.json" + }, + { + "path": "./packages/discord/tsconfig.scripts.json" + }, + { + "path": "./packages/expo-eas/tsconfig.json" + }, + { + "path": "./packages/expo-eas/tsconfig.scripts.json" + }, + { + "path": "./packages/fly-io/tsconfig.json" + }, + { + "path": "./packages/fly-io/tsconfig.scripts.json" + }, + { + "path": "./packages/gcp/tsconfig.json" + }, + { + "path": "./packages/gcp/tsconfig.scripts.json" + }, + { + "path": "./packages/github/tsconfig.json" + }, + { + "path": "./packages/github/tsconfig.scripts.json" + }, + { + "path": "./packages/hetzner/tsconfig.json" + }, + { + "path": "./packages/hetzner/tsconfig.scripts.json" + }, + { + "path": "./packages/huggingface/tsconfig.json" + }, + { + "path": "./packages/huggingface/tsconfig.scripts.json" + }, + { + "path": "./packages/kubernetes/tsconfig.json" + }, + { + "path": "./packages/kubernetes/tsconfig.scripts.json" + }, + { + "path": "./packages/modal/tsconfig.json" + }, + { + "path": "./packages/modal/tsconfig.scripts.json" + }, + { + "path": "./packages/mongodb-atlas/tsconfig.json" + }, + { + "path": "./packages/mongodb-atlas/tsconfig.scripts.json" + }, + { + "path": "./packages/neon/tsconfig.json" + }, + { + "path": "./packages/neon/tsconfig.scripts.json" + }, + { + "path": "./packages/planetscale/tsconfig.json" + }, + { + "path": "./packages/planetscale/tsconfig.scripts.json" + }, + { + "path": "./packages/posthog/tsconfig.json" + }, + { + "path": "./packages/posthog/tsconfig.scripts.json" + }, + { + "path": "./packages/prisma-postgres/tsconfig.json" + }, + { + "path": "./packages/prisma-postgres/tsconfig.scripts.json" + }, + { + "path": "./packages/railway/tsconfig.json" + }, + { + "path": "./packages/railway/tsconfig.scripts.json" + }, + { + "path": "./packages/stripe/tsconfig.json" + }, + { + "path": "./packages/stripe/tsconfig.scripts.json" + }, + { + "path": "./packages/supabase/tsconfig.json" + }, + { + "path": "./packages/supabase/tsconfig.scripts.json" + }, + { + "path": "./packages/turso/tsconfig.json" + }, + { + "path": "./packages/turso/tsconfig.scripts.json" + }, + { + "path": "./packages/typesense/tsconfig.json" + }, + { + "path": "./packages/typesense/tsconfig.scripts.json" + }, + { + "path": "./packages/vanta/tsconfig.json" + }, + { + "path": "./packages/vanta/tsconfig.scripts.json" + }, + { + "path": "./packages/vercel/tsconfig.json" + }, + { + "path": "./packages/vercel/tsconfig.scripts.json" + }, + { + "path": "./packages/whop/tsconfig.json" + }, + { + "path": "./packages/whop/tsconfig.scripts.json" + }, + { + "path": "./packages/workos/tsconfig.json" + }, + { + "path": "./packages/workos/tsconfig.scripts.json" + } ] }