{ "swagger": "2.0", "info": { "title": "Attestation REST API", "version": "2025-06-01", "description": "Describes the interface for the per-tenant enclave service.", "x-typespec-generated": [ { "emitter": "@azure-tools/typespec-autorest" } ] }, "schemes": [ "https" ], "x-ms-parameterized-host": { "hostTemplate": "{endpoint}", "useSchemePrefix": false, "parameters": [ { "name": "endpoint", "in": "path", "required": true, "type": "string", "format": "uri", "x-ms-skip-url-encoding": true } ] }, "produces": [ "application/json" ], "consumes": [ "application/json" ], "security": [ { "OAuth2Auth": [ "https://attest.azure.net/.default" ] } ], "securityDefinitions": { "OAuth2Auth": { "type": "oauth2", "flow": "implicit", "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", "scopes": { "https://attest.azure.net/.default": "" } } }, "tags": [], "paths": { "/.well-known/openid-configuration": { "get": { "operationId": "MetadataConfiguration_Get", "summary": "Retrieves the OpenID Configuration data for the Azure Attestation Service", "description": "Retrieves metadata about the attestation signing keys in use by the attestation\nservice", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/OpenIDConfigurationResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Get OpenID Metadata": { "$ref": "./examples/Get_MetadataConfiguration.json" } } } }, "/attest/AzureGuest": { "post": { "operationId": "Attestation_AttestAzureGuest", "summary": "Attest to an Azure Guest VM.", "description": "Processes an Azure Guest TCG Log, producing an artifact. The type of artifact\nproduced is dependent upon attestation policy.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/AttestAzureGuestRequest" } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/SealedAttestationResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Attest Azure Guest VM": { "$ref": "./examples/AttestAzureGuestVm.json" } } } }, "/attest/OpenEnclave": { "post": { "operationId": "Attestation_AttestOpenEnclave", "summary": "Attest to an SGX enclave.", "description": "Processes an OpenEnclave report , producing an artifact. The type of artifact\nproduced is dependent upon attestation policy.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/AttestOpenEnclaveRequest" } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/AttestationResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Attest OpenEnclave": { "$ref": "./examples/AttestOpenEnclave.json" } } } }, "/attest/SevSnpVm": { "post": { "operationId": "Attestation_AttestSevSnpVm", "summary": "Attest to an SEV SNP Virtual Machine.", "description": "Processes a SEV SNP Boot chain. The type of artifact produced is dependent upon\nattestation policy.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/AttestSevSnpVmRequest" } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/AttestationResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Attest SevSnpVm": { "$ref": "./examples/AttestSevSnpVm.json" } } } }, "/attest/SgxEnclave": { "post": { "operationId": "Attestation_AttestSgxEnclave", "summary": "Attest to an SGX enclave.", "description": "Processes an SGX enclave quote, producing an artifact. The type of artifact\nproduced is dependent upon attestation policy.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/AttestSgxEnclaveRequest" } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/AttestationResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Attest SgxEnclave": { "$ref": "./examples/AttestSgxEnclave.json" } } } }, "/attest/TdxVm": { "post": { "operationId": "Attestation_AttestTdxVm", "summary": "Attest to a TDX Virtual Machine.", "description": "Processes an TDX quote, producing an artifact. The type of artifact produced is\ndependent upon attestation policy.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/AttestTdxVmRequest" } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/AttestationResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Attest SgxEnclave": { "$ref": "./examples/AttestTdxVm.json" } } } }, "/attest/Tpm": { "post": { "operationId": "Attestation_AttestTpm", "summary": "Attest a Virtualization-based Security (VBS) enclave.", "description": "Processes attestation evidence from a VBS enclave, producing an attestation\nresult. The attestation result produced is dependent upon the attestation\npolicy.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/TpmAttestationRequest" } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/TpmAttestationResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Attest EdgeTpm": { "$ref": "./examples/AttestVbsEnclave.json" } } } }, "/certificates": { "get": { "operationId": "PolicyCertificates_Get", "summary": "Retrieves the set of certificates used to express policy for the current tenant.", "description": "Retrieves the set of certificates used to express policy for the current tenant.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/PolicyCertificatesResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Get PolicyCertificates": { "$ref": "./examples/Get_PolicyCertificates.json" } } } }, "/certificates:add": { "post": { "operationId": "PolicyCertificates_Add", "summary": "Adds a new attestation policy certificate to the set of policy management\ncertificates.", "description": "Adds a new attestation policy certificate to the set of policy management\ncertificates.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/AddPolicyCertificateRequest" } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/PolicyCertificatesModifyResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Add PolicyCertificate": { "$ref": "./examples/Add_PolicyCertificate.json" } } } }, "/certificates:remove": { "post": { "operationId": "PolicyCertificates_Remove", "summary": "Removes the specified policy management certificate. Note that the final policy\nmanagement certificate cannot be removed.", "description": "Removes the specified policy management certificate. Note that the final policy\nmanagement certificate cannot be removed.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/RemovePolicyCertificateRequest" } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/PolicyCertificatesModifyResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Remove PolicyCertificate": { "$ref": "./examples/Remove_PolicyCertificate.json" } } } }, "/certs": { "get": { "operationId": "SigningCertificates_Get", "summary": "Retrieves the attestation signing keys in use by the attestation service", "description": "Retrieves metadata signing certificates in use by the attestation service", "produces": [ "application/jwk+json", "application/json" ], "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/JsonWebKeySet" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Get Token Signing Certificates": { "$ref": "./examples/Get_Certs.json" } } } }, "/policies/{attestationType}": { "get": { "operationId": "Policy_Get", "summary": "Retrieves the current policy for an attestation type.", "description": "Retrieves the current policy for an attestation type.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "attestationType", "in": "path", "description": "Specifies the trusted execution environment to be used to validate the evidence", "required": true, "type": "string", "enum": [ "SgxEnclave", "OpenEnclave", "AzureGuest", "SevSnpVm", "Tpm", "TdxVm" ], "x-ms-enum": { "name": "AttestationType", "modelAsString": true, "values": [ { "name": "SgxEnclave", "value": "SgxEnclave", "description": "Intel Software Guard eXtensions" }, { "name": "OpenEnclave", "value": "OpenEnclave", "description": "OpenEnclave extensions to SGX" }, { "name": "AzureGuest", "value": "AzureGuest", "description": "Azure Guest Attestation" }, { "name": "SevSnpVm", "value": "SevSnpVm", "description": "AMD SEV SNP Virtual Machine" }, { "name": "Tpm", "value": "Tpm", "description": "Edge TPM Virtualization Based Security" }, { "name": "TdxVm", "value": "TdxVm", "description": "Intel TDX Virtual Machine" } ] } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/PolicyResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Get Policy": { "$ref": "./examples/Get_Policy.json" } } }, "put": { "operationId": "Policy_Set", "summary": "Sets the policy for a given attestation type.", "description": "Sets the policy for a given attestation type.", "consumes": [ "text/plain" ], "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "attestationType", "in": "path", "description": "Specifies the trusted execution environment to be used to validate the evidence", "required": true, "type": "string", "enum": [ "SgxEnclave", "OpenEnclave", "AzureGuest", "SevSnpVm", "Tpm", "TdxVm" ], "x-ms-enum": { "name": "AttestationType", "modelAsString": true, "values": [ { "name": "SgxEnclave", "value": "SgxEnclave", "description": "Intel Software Guard eXtensions" }, { "name": "OpenEnclave", "value": "OpenEnclave", "description": "OpenEnclave extensions to SGX" }, { "name": "AzureGuest", "value": "AzureGuest", "description": "Azure Guest Attestation" }, { "name": "SevSnpVm", "value": "SevSnpVm", "description": "AMD SEV SNP Virtual Machine" }, { "name": "Tpm", "value": "Tpm", "description": "Edge TPM Virtualization Based Security" }, { "name": "TdxVm", "value": "TdxVm", "description": "Intel TDX Virtual Machine" } ] } }, { "name": "newAttestationPolicy", "in": "body", "description": "JWT Expressing the new policy whose body is a StoredAttestationPolicy object.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/PolicyResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Set Policy": { "$ref": "./examples/Set_Policy.json" } } } }, "/policies/{attestationType}:reset": { "post": { "operationId": "Policy_Reset", "summary": "Resets the attestation policy for the specified tenant and reverts to the\ndefault policy.", "description": "Resets the attestation policy for the specified tenant and reverts to the\ndefault policy.", "consumes": [ "text/plain" ], "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "attestationType", "in": "path", "description": "Specifies the trusted execution environment to be used to validate the evidence", "required": true, "type": "string", "enum": [ "SgxEnclave", "OpenEnclave", "AzureGuest", "SevSnpVm", "Tpm", "TdxVm" ], "x-ms-enum": { "name": "AttestationType", "modelAsString": true, "values": [ { "name": "SgxEnclave", "value": "SgxEnclave", "description": "Intel Software Guard eXtensions" }, { "name": "OpenEnclave", "value": "OpenEnclave", "description": "OpenEnclave extensions to SGX" }, { "name": "AzureGuest", "value": "AzureGuest", "description": "Azure Guest Attestation" }, { "name": "SevSnpVm", "value": "SevSnpVm", "description": "AMD SEV SNP Virtual Machine" }, { "name": "Tpm", "value": "Tpm", "description": "Edge TPM Virtualization Based Security" }, { "name": "TdxVm", "value": "TdxVm", "description": "Intel TDX Virtual Machine" } ] } }, { "name": "policyJws", "in": "body", "description": "JSON Web Signature with an empty policy document", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/PolicyResponse" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Reset Policy": { "$ref": "./examples/Reset_Policy.json" } } } }, "/tcbbaselines/{attestationType}": { "get": { "operationId": "TcbBaselines_Get", "summary": "Retrieves a list of all Azure supported baseline details for the a TEE type\nalong with an indication of which one is in enforced for the attestation\nprovider.", "description": "Retrieves a list of all Azure supported baseline details for the a TEE type\nalong with an indication of which one is in enforced for the attestation\nprovider.", "parameters": [ { "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { "name": "attestationType", "in": "path", "description": "Specifies the trusted execution environment to be used to validate the evidence", "required": true, "type": "string", "enum": [ "SgxEnclave", "OpenEnclave", "AzureGuest", "SevSnpVm", "Tpm", "TdxVm" ], "x-ms-enum": { "name": "AttestationType", "modelAsString": true, "values": [ { "name": "SgxEnclave", "value": "SgxEnclave", "description": "Intel Software Guard eXtensions" }, { "name": "OpenEnclave", "value": "OpenEnclave", "description": "OpenEnclave extensions to SGX" }, { "name": "AzureGuest", "value": "AzureGuest", "description": "Azure Guest Attestation" }, { "name": "SevSnpVm", "value": "SevSnpVm", "description": "AMD SEV SNP Virtual Machine" }, { "name": "Tpm", "value": "Tpm", "description": "Edge TPM Virtualization Based Security" }, { "name": "TdxVm", "value": "TdxVm", "description": "Intel TDX Virtual Machine" } ] } } ], "responses": { "200": { "description": "The request has succeeded.", "schema": { "$ref": "#/definitions/TcbBaselineResult" } }, "default": { "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/Azure.Core.Foundations.ErrorResponse" }, "headers": { "x-ms-error-code": { "type": "string", "description": "String error code indicating what went wrong." } } } }, "x-ms-examples": { "Get TcbBaselines": { "$ref": "./examples/Get_TcbBaselines.json" } } } } }, "definitions": { "AddPolicyCertificateRequest": { "type": "object", "description": "Request model for adding a policy certificate", "properties": { "policyCertificateToAdd": { "type": "string", "description": "The certificate to add, as a string (e.g., PEM or JWK)" } }, "required": [ "policyCertificateToAdd" ] }, "AttestAzureGuestRequest": { "type": "object", "description": "Attestation request for Azure Guest Gen2 VMs", "properties": { "attestationInfo": { "type": "string", "description": "Attestation client information containing all artifacts required for Guest\nAttestation." } } }, "AttestOpenEnclaveRequest": { "type": "object", "description": "Attestation request for Intel SGX enclaves", "properties": { "report": { "type": "string", "format": "base64url", "description": "OpenEnclave report from the enclave to be attested" }, "runtimeData": { "$ref": "#/definitions/RuntimeData", "description": "Runtime data provided by the enclave at the time of report generation. The MAA\nwill verify that the first 32 bytes of the report_data field of the quote\ncontains the SHA256 hash of the decoded \"data\" field of the runtime data." }, "initTimeData": { "$ref": "#/definitions/InitTimeData", "description": "Base64Url encoded \"InitTime data\". The MAA will verify that the init data was\nknown to the enclave. Note that InitTimeData is invalid for CoffeeLake\nprocessors." }, "draftPolicyForAttestation": { "type": "string", "description": "Attest against the provided draft policy. Note that the resulting token cannot\nbe validated." }, "nonce": { "type": "string", "description": "Nonce for incoming request - emitted in the generated attestation token" } } }, "AttestSevSnpVmRequest": { "type": "object", "description": "Attestation request for AMD SEV SNP Virtual Machine", "properties": { "report": { "type": "string", "description": "Hardware rooted report of the virtual machine being attested along with the\nsigning certificate chain and optionally, additional endorsements" }, "runtimeData": { "$ref": "#/definitions/RuntimeData", "description": "Runtime data provided by the enclave at the time of report generation. The MAA\nwill verify that the run time data is known to the attestation target." }, "initTimeData": { "$ref": "#/definitions/InitTimeData", "description": "Initialization data provided by the enclave at the time of report generation.\nThe MAA will verify that the init time data is known to the attestation target." }, "draftPolicyForAttestation": { "type": "string", "description": "Attest against the provided draft policy. Note that the resulting token cannot\nbe validated." }, "nonce": { "type": "string", "description": "Nonce for incoming request - emitted in the generated attestation token" } } }, "AttestSgxEnclaveRequest": { "type": "object", "description": "Attestation request for Intel SGX enclaves", "properties": { "quote": { "type": "string", "format": "base64url", "description": "Quote of the enclave to be attested" }, "runtimeData": { "$ref": "#/definitions/RuntimeData", "description": "Runtime data provided by the enclave at the time of quote generation. The MAA\nwill verify that the first 32 bytes of the report_data field of the quote\ncontains the SHA256 hash of the decoded \"data\" field of the runtime data." }, "initTimeData": { "$ref": "#/definitions/InitTimeData", "description": "Initialization data provided when the enclave is created. MAA will verify that\nthe init data was known to the enclave. Note that InitTimeData is invalid for\nCoffeeLake processors." }, "draftPolicyForAttestation": { "type": "string", "description": "Attest against the provided draft policy. Note that the resulting token cannot\nbe validated." }, "nonce": { "type": "string", "description": "Nonce for incoming request - emitted in the generated attestation token" } } }, "AttestTdxVmRequest": { "type": "object", "description": "Attestation request for Intel TDX Virtual Machine", "properties": { "quote": { "type": "string", "format": "base64url", "description": "Quote of the TDX virtual machine to be attested" }, "runtimeData": { "$ref": "#/definitions/RuntimeData", "description": "Runtime data provided by the enclave at the time of quote generation. The MAA\nwill verify that the first 32 bytes of the report_data field of the quote\ncontains the SHA256 hash of the decoded \"data\" field of the runtime data." }, "initTimeData": { "$ref": "#/definitions/InitTimeData", "description": "Initialization data provided when the enclave is created. MAA will verify that\nthe init data was known to the enclave." }, "nonce": { "type": "string", "description": "Nonce for incoming request - emitted in the generated attestation token" } } }, "AttestationCertificateManagementBody": { "type": "object", "description": "The body of the JWT used for the PolicyCertificates APIs", "properties": { "policyCertificate": { "$ref": "#/definitions/JsonWebKey", "description": "RFC 7517 Json Web Key describing the certificate." } } }, "AttestationResponse": { "type": "object", "description": "The result of an attestation operation", "properties": { "token": { "type": "string", "description": "An RFC 7519 JSON Web Token, the body of which is an AttestationResult object.", "pattern": "[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]*" } } }, "AttestationResult": { "type": "object", "description": "A Microsoft Azure Attestation response token body - the body of a response\ntoken issued by MAA", "properties": { "jti": { "type": "string", "description": "Unique Identifier for the token" }, "iss": { "type": "string", "description": "The Principal who issued the token" }, "iat": { "type": "number", "format": "float", "description": "The time at which the token was issued, in the number of seconds since\n1970-01-0T00:00:00Z UTC" }, "exp": { "type": "number", "format": "float", "description": "The expiration time after which the token is no longer valid, in the number of\nseconds since 1970-01-0T00:00:00Z UTC" }, "nbf": { "type": "number", "format": "float", "description": "The not before time before which the token cannot be considered valid, in the\nnumber of seconds since 1970-01-0T00:00:00Z UTC" }, "cnf": { "type": "object", "description": "An RFC 7800 Proof of Possession Key", "additionalProperties": { "type": "string" } }, "nonce": { "type": "string", "description": "The Nonce input to the attestation request, if provided." }, "x-ms-ver": { "type": "string", "description": "The Schema version of this structure. Current Value: 1.0", "x-ms-client-name": "version" }, "x-ms-runtime": { "type": "object", "description": "Runtime Claims", "additionalProperties": { "type": "string" }, "x-ms-client-name": "runtimeClaims" }, "x-ms-inittime": { "type": "object", "description": "Inittime Claims", "additionalProperties": { "type": "string" }, "x-ms-client-name": "inittimeClaims" }, "x-ms-policy": { "type": "object", "description": "Policy Generated Claims", "additionalProperties": { "type": "string" }, "x-ms-client-name": "policyClaims" }, "x-ms-attestation-type": { "type": "string", "description": "The Attestation type being attested.", "x-ms-client-name": "verifierType" }, "x-ms-policy-signer": { "$ref": "#/definitions/JsonWebKey", "description": "The certificate used to sign the policy object, if specified.", "x-ms-client-name": "policySigner" }, "x-ms-policy-hash": { "type": "string", "format": "base64url", "description": "The SHA256 hash of the BASE64URL encoded policy text used for attestation", "x-ms-client-name": "policyHash" }, "x-ms-sgx-is-debuggable": { "type": "boolean", "description": "True if the enclave is debuggable, false otherwise", "x-ms-client-name": "isDebuggable" }, "x-ms-sgx-product-id": { "type": "number", "format": "float", "description": "The SGX Product ID for the enclave.", "x-ms-client-name": "productId" }, "x-ms-sgx-mrenclave": { "type": "string", "description": "The HEX encoded SGX MRENCLAVE value for the enclave.", "x-ms-client-name": "mrEnclave" }, "x-ms-sgx-mrsigner": { "type": "string", "description": "The HEX encoded SGX MRSIGNER value for the enclave.", "x-ms-client-name": "mrSigner" }, "x-ms-sgx-svn": { "type": "number", "format": "float", "description": "The SGX SVN value for the enclave." }, "x-ms-sgx-ehd": { "type": "string", "format": "base64url", "description": "A copy of the RuntimeData specified as an input to the attest call.", "x-ms-client-name": "enclaveHeldData" }, "x-ms-sgx-collateral": { "type": "object", "description": "The SGX SVN value for the enclave.", "additionalProperties": { "type": "string" }, "x-ms-client-name": "sgxCollateral" }, "ver": { "type": "string", "description": "DEPRECATED: Private Preview version of x-ms-ver claim.", "x-ms-client-name": "deprecatedVersion" }, "is-debuggable": { "type": "boolean", "description": "DEPRECATED: Private Preview version of x-ms-sgx-is-debuggable claim.", "x-ms-client-name": "deprecatedIsDebuggable" }, "maa-attestationcollateral": { "type": "object", "description": "DEPRECATED: Private Preview version of x-ms-sgx-collateral claim.", "additionalProperties": { "type": "string" }, "x-ms-client-name": "deprecatedSgxCollateral" }, "aas-ehd": { "type": "string", "format": "base64url", "description": "DEPRECATED: Private Preview version of x-ms-sgx-ehd claim.", "x-ms-client-name": "deprecatedEnclaveHeldData" }, "maa-ehd": { "type": "string", "format": "base64url", "description": "DEPRECATED: Private Preview version of x-ms-sgx-ehd claim.", "x-ms-client-name": "deprecatedEnclaveHeldData2" }, "product-id": { "type": "number", "format": "float", "description": "DEPRECATED: Private Preview version of x-ms-sgx-product-id", "x-ms-client-name": "deprecatedProductId" }, "sgx-mrenclave": { "type": "string", "description": "DEPRECATED: Private Preview version of x-ms-sgx-mrenclave.", "x-ms-client-name": "deprecatedMrEnclave" }, "sgx-mrsigner": { "type": "string", "description": "DEPRECATED: Private Preview version of x-ms-sgx-mrsigner.", "x-ms-client-name": "deprecatedMrSigner" }, "svn": { "type": "number", "format": "float", "description": "DEPRECATED: Private Preview version of x-ms-sgx-svn." }, "tee": { "type": "string", "description": "DEPRECATED: Private Preview version of x-ms-tee.", "x-ms-client-name": "deprecatedTee" }, "policy_signer": { "$ref": "#/definitions/JsonWebKey", "description": "DEPRECATED: Private Preview version of x-ms-policy-signer", "x-ms-client-name": "deprecatedPolicySigner" }, "policy_hash": { "type": "string", "format": "byte", "description": "DEPRECATED: Private Preview version of x-ms-policy-hash", "x-ms-client-name": "deprecatedPolicyHash" }, "rp_data": { "type": "string", "description": "DEPRECATED: Private Preview version of nonce", "x-ms-client-name": "deprecatedRpData" } } }, "AttestationType": { "type": "string", "description": "AttestationType", "enum": [ "SgxEnclave", "OpenEnclave", "AzureGuest", "SevSnpVm", "Tpm", "TdxVm" ], "x-ms-enum": { "name": "AttestationType", "modelAsString": true, "values": [ { "name": "SgxEnclave", "value": "SgxEnclave", "description": "Intel Software Guard eXtensions" }, { "name": "OpenEnclave", "value": "OpenEnclave", "description": "OpenEnclave extensions to SGX" }, { "name": "AzureGuest", "value": "AzureGuest", "description": "Azure Guest Attestation" }, { "name": "SevSnpVm", "value": "SevSnpVm", "description": "AMD SEV SNP Virtual Machine" }, { "name": "Tpm", "value": "Tpm", "description": "Edge TPM Virtualization Based Security" }, { "name": "TdxVm", "value": "TdxVm", "description": "Intel TDX Virtual Machine" } ] } }, "Azure.Core.Foundations.Error": { "type": "object", "description": "The error object.", "properties": { "code": { "type": "string", "description": "One of a server-defined set of error codes." }, "message": { "type": "string", "description": "A human-readable representation of the error." }, "target": { "type": "string", "description": "The target of the error." }, "details": { "type": "array", "description": "An array of details about specific errors that led to this reported error.", "items": { "$ref": "#/definitions/Azure.Core.Foundations.Error" } }, "innererror": { "$ref": "#/definitions/Azure.Core.Foundations.InnerError", "description": "An object containing more specific information than the current object about the error." } }, "required": [ "code", "message" ] }, "Azure.Core.Foundations.ErrorResponse": { "type": "object", "description": "A response containing error details.", "properties": { "error": { "$ref": "#/definitions/Azure.Core.Foundations.Error", "description": "The error object." } }, "required": [ "error" ] }, "Azure.Core.Foundations.InnerError": { "type": "object", "description": "An object containing more specific information about the error. As per Azure REST API guidelines - https://aka.ms/AzureRestApiGuidelines#handling-errors.", "properties": { "code": { "type": "string", "description": "One of a server-defined set of error codes." }, "innererror": { "$ref": "#/definitions/Azure.Core.Foundations.InnerError", "description": "Inner error." } } }, "CertificateModification": { "type": "string", "description": "The result of the operation", "enum": [ "IsPresent", "IsAbsent" ], "x-ms-enum": { "name": "CertificateModification", "modelAsString": true, "values": [ { "name": "IsPresent", "value": "IsPresent", "description": "After the operation was performed, the certificate is in the set of\ncertificates." }, { "name": "IsAbsent", "value": "IsAbsent", "description": "After the operation was performed, the certificate is no longer present in the\nset of certificates." } ] } }, "CloudError": { "type": "object", "description": "An error response from Attestation.", "properties": { "error": { "$ref": "#/definitions/CloudErrorBody", "description": "An error response from Attestation." } } }, "CloudErrorBody": { "type": "object", "description": "An error response from Attestation.", "properties": { "code": { "type": "string", "description": "An identifier for the error. Codes are invariant and are intended to be\nconsumed programmatically." }, "message": { "type": "string", "description": "A message describing the error, intended to be suitable for displaying in a\nuser interface." } } }, "DataType": { "type": "string", "description": "Specifies the type of the data encoded contained within the \"data\" field of a\n\"RuntimeData\" or \"InitTimeData\" object", "enum": [ "Binary", "JSON" ], "x-ms-enum": { "name": "DataType", "modelAsString": true, "values": [ { "name": "Binary", "value": "Binary", "description": "The field's content should be treated as binary and not interpreted by MAA." }, { "name": "JSON", "value": "JSON", "description": "The field's content should be treated as UTF-8 JSON text that may be further\ninterpreted by MAA. Refer to RFC 8259 for a description of JSON serialization\nstandards for interoperability." } ] } }, "InitTimeData": { "type": "object", "description": "Initialization time data are a conduit for any configuration information that\nis unknown when building the Trusted Execution Environment (TEE) and is defined\nat TEE launch time. This data can be used with confidential container or VM\nscenarios to capture configuration settings such as disk volume content,\nnetwork configuration, etc.", "properties": { "data": { "type": "string", "format": "base64url", "description": "Initialization time data are passed into the Trusted Execution Environment\n(TEE) when it is created. For an Icelake SGX quote, the SHA256 hash of the\nInitTimeData must match the lower 32 bytes of the quote's \"config id\"\nattribute. For a SEV-SNP quote, the SHA256 hash of the InitTimeData must match\nthe quote's \"host data\" attribute." }, "dataType": { "$ref": "#/definitions/DataType", "description": "The type of data contained within the \"data\" field" } } }, "JsonWebKey": { "type": "object", "description": "JsonWebKey", "properties": { "alg": { "type": "string", "description": "The \"alg\" (algorithm) parameter identifies the algorithm intended for\nuse with the key. The values used should either be registered in the\nIANA \"JSON Web Signature and Encryption Algorithms\" registry\nestablished by [JWA] or be a value that contains a Collision-\nResistant Name." }, "crv": { "type": "string", "description": "The \"crv\" (curve) parameter identifies the curve type" }, "d": { "type": "string", "description": "RSA private exponent or ECC private key" }, "dp": { "type": "string", "description": "RSA Private Key Parameter" }, "dq": { "type": "string", "description": "RSA Private Key Parameter" }, "e": { "type": "string", "description": "RSA public exponent, in Base64" }, "k": { "type": "string", "description": "Symmetric key" }, "kid": { "type": "string", "description": "The \"kid\" (key ID) parameter is used to match a specific key. This\nis used, for instance, to choose among a set of keys within a JWK Set\nduring key rollover. The structure of the \"kid\" value is\nunspecified. When \"kid\" values are used within a JWK Set, different\nkeys within the JWK Set SHOULD use distinct \"kid\" values. (One\nexample in which different keys might use the same \"kid\" value is if\nthey have different \"kty\" (key type) values but are considered to be\nequivalent alternatives by the application using them.) The \"kid\"\nvalue is a case-sensitive string." }, "kty": { "type": "string", "description": "The \"kty\" (key type) parameter identifies the cryptographic algorithm\nfamily used with the key, such as \"RSA\" or \"EC\". \"kty\" values should\neither be registered in the IANA \"JSON Web Key Types\" registry\nestablished by [JWA] or be a value that contains a Collision-\nResistant Name. The \"kty\" value is a case-sensitive string." }, "n": { "type": "string", "description": "RSA modulus, in Base64" }, "p": { "type": "string", "description": "RSA secret prime" }, "q": { "type": "string", "description": "RSA secret prime, with p < q" }, "qi": { "type": "string", "description": "RSA Private Key Parameter" }, "use": { "type": "string", "description": "Use (\"public key use\") identifies the intended use of\nthe public key. The \"use\" parameter is employed to indicate whether\na public key is used for encrypting data or verifying the signature\non data. Values are commonly \"sig\" (signature) or \"enc\" (encryption)." }, "x": { "type": "string", "description": "X coordinate for the Elliptic Curve point" }, "x5c": { "type": "array", "description": "The \"x5c\" (X.509 certificate chain) parameter contains a chain of one\nor more PKIX certificates [RFC5280]. The certificate chain is\nrepresented as a JSON array of certificate value strings. Each\nstring in the array is a base64-encoded (Section 4 of [RFC4648] --\nnot base64url-encoded) DER [ITU.X690.1994] PKIX certificate value.\nThe PKIX certificate containing the key value MUST be the first\ncertificate.", "items": { "type": "string" } }, "y": { "type": "string", "description": "Y coordinate for the Elliptic Curve point" } }, "required": [ "kty" ] }, "JsonWebKeySet": { "type": "object", "description": "JsonWebKeySet", "properties": { "keys": { "type": "array", "description": "The value of the \"keys\" parameter is an array of JWK values. By\ndefault, the order of the JWK values within the array does not imply\nan order of preference among them, although applications of JWK Sets\ncan choose to assign a meaning to the order for their purposes, if\ndesired.", "items": { "$ref": "#/definitions/JsonWebKey" } } } }, "OpenIDConfigurationResponse": { "type": "object", "description": "The response to the OpenID metadata description document API", "properties": { "response_types_supported": { "type": "array", "description": "Types supported in the OpenID metadata API", "items": { "type": "string" }, "x-ms-client-name": "responseTypesSupported" }, "id_token_signing_alg_values_supported": { "type": "array", "description": "List of the supported signing algorithms", "items": { "type": "string" }, "x-ms-client-name": "idTokenSigningAlgValuesSupported" }, "revocation_endpoint": { "type": "string", "description": "Revocation endpoint", "x-ms-client-name": "revocationEndpoint" }, "issuer": { "type": "string", "description": "Issuer tenant base endpoint" }, "jwks_uri": { "type": "string", "description": "The URI to retrieve the signing keys", "x-ms-client-name": "jwksUri" }, "claims_supported": { "type": "array", "description": "Set of claims supported by the OpenID metadata endpoint", "items": { "type": "string" }, "x-ms-client-name": "claimsSupported" } } }, "PolicyCertificatesModificationResult": { "type": "object", "description": "The result of a policy certificate modification", "properties": { "x-ms-certificate-thumbprint": { "type": "string", "description": "Hex encoded SHA1 Hash of the binary representation certificate which was added\nor removed", "x-ms-client-name": "certificateThumbprint" }, "x-ms-policycertificates-result": { "$ref": "#/definitions/CertificateModification", "description": "The result of the operation", "x-ms-client-name": "certificateResolution" } } }, "PolicyCertificatesModifyResponse": { "type": "object", "description": "The response to an attestation policy management API", "properties": { "token": { "type": "string", "description": "An RFC7519 JSON Web Token structure whose body is a\nPolicyCertificatesModificationResult object.", "pattern": "[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]*" } } }, "PolicyCertificatesResponse": { "type": "object", "description": "The response to an attestation policy management API", "properties": { "token": { "type": "string", "description": "An RFC7519 JSON Web Token structure containing a PolicyCertificatesResults\nobject which contains the certificates used to validate policy changes", "pattern": "[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]*" } } }, "PolicyCertificatesResult": { "type": "object", "description": "The result of a call to retrieve policy certificates.", "properties": { "x-ms-policy-certificates": { "$ref": "#/definitions/JsonWebKeySet", "description": "SHA256 Hash of the binary representation certificate which was added or removed", "x-ms-client-name": "policyCertificates" } } }, "PolicyModification": { "type": "string", "description": "The result of the operation", "enum": [ "Updated", "Removed" ], "x-ms-enum": { "name": "PolicyModification", "modelAsString": true, "values": [ { "name": "Updated", "value": "Updated", "description": "The specified policy object was updated." }, { "name": "Removed", "value": "Removed", "description": "The specified policy object was removed." } ] } }, "PolicyResponse": { "type": "object", "description": "The response to an attestation policy operation", "properties": { "token": { "type": "string", "description": "An RFC7519 JSON Web Token structure whose body is an PolicyResult object.", "pattern": "[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]*" } } }, "PolicyResult": { "type": "object", "description": "The result of a policy certificate modification", "properties": { "x-ms-policy-result": { "$ref": "#/definitions/PolicyModification", "description": "The result of the operation", "x-ms-client-name": "policyResolution" }, "x-ms-policy-token-hash": { "type": "string", "format": "base64url", "description": "The SHA256 hash of the policy object modified", "x-ms-client-name": "policyTokenHash" }, "x-ms-policy-signer": { "$ref": "#/definitions/JsonWebKey", "description": "The certificate used to sign the policy object, if specified", "x-ms-client-name": "policySigner" }, "x-ms-policy": { "type": "string", "description": "A JSON Web Token containing a StoredAttestationPolicy object with the\nattestation policy", "pattern": "[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]*", "x-ms-client-name": "policy" } } }, "RemovePolicyCertificateRequest": { "type": "object", "description": "Request model for removing a policy certificate", "properties": { "policyCertificateToRemove": { "type": "string", "description": "The certificate to remove, as a string (e.g., PEM or JWK)" } }, "required": [ "policyCertificateToRemove" ] }, "RuntimeData": { "type": "object", "description": "Runtime data are a conduit for any information defined by the Trusted Execution\nEnvironment (TEE) when actually running.", "properties": { "data": { "type": "string", "format": "base64url", "description": "Runtime data are generated by the Trusted Execution Environment (TEE). For an\nSGX quote (Coffeelake or Icelake), the SHA256 hash of the RuntimeData must\nmatch the lower 32 bytes of the quote's \"report data\" attribute. For a SEV-SNP\nquote, the SHA256 hash of the RuntimeData must match the quote's \"report data\"\nattribute." }, "dataType": { "$ref": "#/definitions/DataType", "description": "The type of data contained within the \"data\" field" } } }, "SealedAttestationResponse": { "type": "object", "description": "The sealed result of an attestation operation", "properties": { "token": { "type": "string", "description": "A sealed RFC 7519 JSON Web Token, the body of which is an AttestationResult\nobject." } } }, "SigningCertificatesContentType": { "type": "string", "description": "Content type for upload", "enum": [ "application/jwk+json", "application/json" ], "x-ms-enum": { "name": "SigningCertificatesContentType", "modelAsString": false, "values": [ { "name": "application/jwk+json", "value": "application/jwk+json", "description": "Content Type 'application/jwk+json'" }, { "name": "application/json", "value": "application/json", "description": "Content Type 'application/json'" } ] } }, "StoredAttestationPolicy": { "type": "object", "description": "StoredAttestationPolicy", "properties": { "AttestationPolicy": { "type": "string", "format": "base64url", "description": "Policy text to set as a sequence of UTF-8 encoded octets.", "x-ms-client-name": "attestationPolicy" } } }, "TcbBaseline": { "type": "object", "description": "TEE specific Tcb baseline used in attestation, and baseline details including\nbaseline identifier, release date and minimum required software version", "properties": { "tcbIdentifier": { "type": "string", "description": "The Tcb baseline Identifier used in attestation policy" }, "tcbEvaluationDataNumber": { "type": "integer", "format": "int32", "description": "A monotonically increasing sequence number changed when Intel updates the\ncontent of the TCB evaluation data set. SGX TEE specific property" }, "tcbReleaseDate": { "type": "string", "format": "date-time", "description": "Date and time when the Tcb is released. SGX TEE specific property" }, "minimumPswLinuxVersion": { "type": "string", "description": "Minimum Linux PSW version required to support the corresponding Tcb baseline.\nSGX TEE specific property" }, "minimumPswWindowsVersion": { "type": "string", "description": "Minimum Windows PSW version required to support the corresponding Tcb baseline.\nSGX TEE specific property" }, "isSelectedTcb": { "type": "boolean", "description": "The corresponding Tcb baseline is set in attestation policy and is used in\nattestation request if set to true" } } }, "TcbBaselineResult": { "type": "object", "description": "A list of all Azure supported baseline details for the a TEE type along with an\nindication of which one is in enforced for the attestation provider", "properties": { "tcbBaselines": { "type": "array", "description": "A list of all Azure supported baseline details for the a TEE type along with an\nindication of which one is in enforced for the attestation provider", "items": { "$ref": "#/definitions/TcbBaseline" } } } }, "TpmAttestationRequest": { "type": "object", "description": "Attestation request for Trusted Platform Module (TPM) attestation.", "properties": { "data": { "type": "string", "format": "base64url", "description": "Protocol data containing artifacts for attestation." } } }, "TpmAttestationResponse": { "type": "object", "description": "Attestation response for Trusted Platform Module (TPM) attestation.", "properties": { "data": { "type": "string", "format": "base64url", "description": "Protocol data containing attestation service response." } } } }, "parameters": { "Azure.Core.Foundations.ApiVersionParameter": { "name": "api-version", "in": "query", "description": "The API version to use for this operation.", "required": true, "type": "string", "minLength": 1, "x-ms-parameter-location": "method", "x-ms-client-name": "apiVersion" } } }