{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/cloudtruth/main/json-schema/cloudtruth-azure-key-vault-push-schema.json",
  "title": "AzureKeyVaultPush",
  "description": "Push actions can be configured to send configuration and secrets to\nintegrations when tags are updated.",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cloudtruth-openapi.yml#/components/schemas/AzureKeyVaultPush",
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "readOnly": true
    },
    "id": {
      "type": "string",
      "format": "uuid",
      "readOnly": true,
      "description": "Unique identifier for the action."
    },
    "name": {
      "type": "string",
      "description": "The action name.",
      "maxLength": 256
    },
    "description": {
      "type": "string",
      "description": "The optional description for the action."
    },
    "latest_task": {
      "allOf": [
        {
          "$ref": "#/$defs/AzureKeyVaultPushTask"
        }
      ],
      "readOnly": true,
      "nullable": true,
      "description": "The most recent task run for this action."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true
    },
    "modified_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "readOnly": true
    },
    "coerce_parameters": {
      "type": "boolean",
      "description": "This setting allows parameters (non-secrets) to be pushed to a destination that only supports storing secrets.  This may increase your overall cost from the cloud provider as some cloud providers charge a premium for secrets-only storage."
    },
    "include_parameters": {
      "type": "boolean",
      "description": "Include parameters (non-secrets) in the values being pushed.  This setting requires the destination to support parameters or for the `coerce_parameters` flag to be enabled, otherwise the push will fail."
    },
    "include_secrets": {
      "type": "boolean",
      "description": "Include secrets in the values being pushed.  This setting requires the destination to support secrets, otherwise the push will fail."
    },
    "include_templates": {
      "type": "boolean",
      "description": "Include templates in the values being pushed."
    },
    "dry_run": {
      "type": "boolean",
      "description": "When set to dry-run mode an action will report the changes that it would have made in task steps, however those changes are not actually performed."
    },
    "force": {
      "type": "boolean",
      "description": "Normally, push will check to see if it originated the values in the destination before making changes to them.  Forcing a push disables the ownership check."
    },
    "local": {
      "type": "boolean",
      "description": "Normally, push will process all parameters including those that flow in from project dependencies.  Declaring a push as `local` will cause it to only process the parameters defined in the selected projects."
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "description": "Projects that are included in the push."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "description": "Tags are used to select parameters by environment from the projects included in the push.  You cannot have two tags from the same environment in the same push."
    },
    "resource": {
      "type": [
        "string",
        "null"
      ],
      "description": "Defines a path through the integration to the location where values will be pushed.\n\nThe following mustache-style substitutions can be used in the string:\n\n  - ``{{ environment }}`` to insert the environment name\n  - ``{{ parameter }}`` to insert the parameter name\n  - ``{{ project }}`` to insert the project name\n  - ``{{ push }}`` to insert the push name\n  - ``{{ tag }}`` to insert the tag name\n\nWe recommend that you use project, environment, and parameter at a minimum to disambiguate your pushed resource identifiers.\n\nIf you include multiple projects in the push, the `project` substitution is required.  If you include multiple tags from different environments in the push, the `environment` substitution is required.  If you include multiple tags from the same environment in the push, the `tag` substitution is required.  In all cases, the `parameter` substitution is always required.",
      "maxLength": 1024
    }
  },
  "required": [
    "created_at",
    "id",
    "latest_task",
    "modified_at",
    "name",
    "projects",
    "resource",
    "tags",
    "url"
  ],
  "$defs": {
    "AzureKeyVaultPushTask": {
      "type": "object",
      "description": "Push task for an Azure Key Vault integration.",
      "properties": {
        "url": {
          "type": "string",
          "format": "uri",
          "readOnly": true
        },
        "id": {
          "type": "string",
          "format": "uuid",
          "readOnly": true,
          "description": "The unique identifier for the task."
        },
        "reason": {
          "type": [
            "string",
            "null"
          ],
          "description": "The reason why this task was triggered.",
          "maxLength": 256
        },
        "dry_run": {
          "type": "boolean",
          "description": "Indicates task steps were only simulated, not actually performed."
        },
        "state": {
          "allOf": [
            {
              "$ref": "#/$defs/StateEnum"
            }
          ],
          "description": "The current state of this task.\n\n* `queued` - Queued\n* `running` - Running\n* `skipped` - Skipped\n* `success` - Success\n* `failure` - Failure"
        },
        "error_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "If an error occurs early during processing, before attempting to process values, this code may be helpful in determining the problem.",
          "maxLength": 256
        },
        "error_detail": {
          "type": [
            "string",
            "null"
          ],
          "description": "If an error occurs early during processing, before attempting to process values, this detail may be helpful in determining the problem."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "readOnly": true
        },
        "modified_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "readOnly": true
        }
      },
      "required": [
        "created_at",
        "id",
        "modified_at",
        "url"
      ]
    },
    "StateEnum": {
      "enum": [
        "queued",
        "running",
        "skipped",
        "success",
        "failure"
      ],
      "type": "string",
      "description": "* `queued` - Queued\n* `running` - Running\n* `skipped` - Skipped\n* `success` - Success\n* `failure` - Failure"
    }
  }
}