CDR Admin API

The mandated reporting surface every data holder must expose to the ACCC — GET /admin/metrics returns availability, performance, invocation, error and rejection statistics, and POST /admin/register/metadata forces a metadata refresh. A regulator that requires the industry to publish its own operational telemetry through an API is unusual, and it is the mechanism that makes CDR compliance measurable rather than self-declared.

OpenAPI Specification

cdr-admin-openapi.json Raw ↑
{
  "openapi" : "3.0.3",
  "info" : {
    "contact" : {
      "email" : "contact@dsb.gov.au",
      "name" : "Data Standards Body",
      "url" : "https://dsb.gov.au/"
    },
    "description" : "Specifications for admin endpoints applicable to all data holders (except secondary data holders).",
    "license" : {
      "name" : "MIT License",
      "url" : "https://opensource.org/licenses/MIT"
    },
    "title" : "CDR Admin API",
    "version" : "1.36.0"
  },
  "servers" : [ {
    "description" : "MTLS",
    "url" : "https://mtls.dh.example.com/cds-au/v1"
  } ],
  "tags" : [ {
    "description" : "Data Holder Admin endpoints",
    "name" : "Data Holder Admin",
    "x-shortName" : "Admin"
  } ],
  "paths" : {
    "/admin/register/metadata" : {
      "post" : {
        "description" : "Indicate that a critical update to the metadata for Accredited Data Recipients has been made and should be obtained.",
        "operationId" : "metadataUpdate",
        "parameters" : [ {
          "description" : "Version of the API endpoint requested by the client. Must be set to a positive integer. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If the value of [_x-min-v_](#request-headers) is equal to or higher than the value of [_x-v_](#request-headers) then the [_x-min-v_](#request-headers) header should be treated as absent. If all versions requested are not supported then the endpoint should respond with a `406 Not Acceptable`. See [HTTP Headers](#request-headers).",
          "explode" : false,
          "in" : "header",
          "name" : "x-v",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "style" : "simple"
        }, {
          "description" : "Minimum version of the API endpoint requested by the client. Must be set to a positive integer if provided. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If all versions requested are not supported then the endpoint should respond with a `406 Not Acceptable`.",
          "explode" : false,
          "in" : "header",
          "name" : "x-min-v",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "simple"
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/RequestMetaDataUpdate"
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : { }
              }
            },
            "description" : "Successful response",
            "headers" : {
              "x-v" : {
                "$ref" : "#/components/headers/XV"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResponseErrorListV2"
                }
              }
            },
            "description" : "The following error codes **MUST** be supported:<br/><ul class=\"error-code-list\"><li>[400 - Invalid Field](#error-400-field-invalid)</li><li>[400 - Missing Required Field](#error-400-field-missing)</li><li>[400 - Invalid Version](#error-400-header-invalid-version)</li></ul>"
          },
          "406" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResponseErrorListV2"
                }
              }
            },
            "description" : "The following error codes **MUST** be supported:<br/><ul class=\"error-code-list\"><li>[406 - Unsupported Version](#error-406-header-unsupported-version)</li></ul>"
          }
        },
        "summary" : "Metadata Update",
        "tags" : [ "Data Holder Admin" ],
        "x-scopes" : [ "admin:metadata:update" ],
        "x-restricted-access" : "REGISTER",
        "x-version" : "1"
      }
    },
    "/admin/metrics" : {
      "get" : {
        "description" : "This endpoint allows the ACCC to obtain operational statistics from the Data Holder (at the Data Holder Brand level) on the operation of their CDR compliant implementation. The statistics obtainable from this endpoint are determined by the non-functional requirements for the CDR regime.\n\nThis endpoint is not required to be implemented by the Australian Energy Market Operator, the Australian Energy Regulator or the Department of State administered by the Minister of Victoria administering the National Electricity (Victoria) Act 2005 (Vic).\n\nNOTE: This version **MUST** be implemented by **May 13th 2024**\n\nObsolete versions: [v1](includes/obsolete/get-metrics-v1.html) [v2](includes/obsolete/get-metrics-v2.html).\n\nDeprecated versions:\n\n- [v3](includes/obsolete/get-metrics-v3.html) - Implementation not required for Data Holders going live on, or after, 1st November 2023. Other Data Holders **MAY** retire this version from the earlier of **13th May 2024** or from the time the ACCC announce that they no longer call this version\n- [v4](includes/obsolete/get-metrics-v4.html) - This version, or v5, **MUST** be implemented by **November 1st 2023**.\n\nIf the Data Holder supports `private_key_jwt` client authentication they **MUST** validate the scope.",
        "operationId" : "getMetrics",
        "parameters" : [ {
          "description" : "The period of metrics to be requested. Values can be `CURRENT` (meaning metrics for current period, dependent on the metric type), `HISTORIC` (meaning metrics for previous period, depending on the metric type) or `ALL`. If absent the default is `ALL`.",
          "explode" : true,
          "in" : "query",
          "name" : "period",
          "required" : false,
          "schema" : {
            "default" : "ALL",
            "enum" : [ "CURRENT", "HISTORIC", "ALL" ],
            "type" : "string"
          },
          "style" : "form"
        }, {
          "description" : "Version of the API endpoint requested by the client. Must be set to a positive integer. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If the value of [_x-min-v_](#request-headers) is equal to or higher than the value of [_x-v_](#request-headers) then the [_x-min-v_](#request-headers) header should be treated as absent. If all versions requested are not supported then the endpoint should respond with a `406 Not Acceptable`. See [HTTP Headers](#request-headers).",
          "explode" : false,
          "in" : "header",
          "name" : "x-v",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "style" : "simple"
        }, {
          "description" : "Minimum version of the API endpoint requested by the client. Must be set to a positive integer if provided. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If all versions requested are not supported then the endpoint should respond with a `406 Not Acceptable`.",
          "explode" : false,
          "in" : "header",
          "name" : "x-min-v",
          "required" : false,
          "schema" : {
            "type" : "string"
          },
          "style" : "simple"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResponseMetricsListV5"
                }
              }
            },
            "description" : "Successful response",
            "headers" : {
              "x-v" : {
                "$ref" : "#/components/headers/XV"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResponseErrorListV2"
                }
              }
            },
            "description" : "The following error codes **MUST** be supported:<br/><ul class=\"error-code-list\"><li>[400 - Invalid Field](#error-400-field-invalid)</li><li>[400 - Missing Required Field](#error-400-field-missing)</li><li>[400 - Invalid Version](#error-400-header-invalid-version)</li></ul>"
          },
          "406" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResponseErrorListV2"
                }
              }
            },
            "description" : "The following error codes **MUST** be supported:<br/><ul class=\"error-code-list\"><li>[406 - Unsupported Version](#error-406-header-unsupported-version)</li></ul>"
          }
        },
        "summary" : "Get Metrics",
        "tags" : [ "Data Holder Admin" ],
        "x-scopes" : [ "admin:metrics.basic:read" ],
        "x-restricted-access" : "REGISTER",
        "x-version" : "5"
      }
    }
  },
  "components" : {
    "headers" : {
      "XV" : {
        "description" : "The [payload version](#response-headers) that the endpoint has responded with.",
        "explode" : false,
        "required" : true,
        "schema" : {
          "type" : "string"
        },
        "style" : "simple"
      }
    },
    "parameters" : {
      "QueryPeriod" : {
        "description" : "The period of metrics to be requested. Values can be `CURRENT` (meaning metrics for current period, dependent on the metric type), `HISTORIC` (meaning metrics for previous period, depending on the metric type) or `ALL`. If absent the default is `ALL`.",
        "explode" : true,
        "in" : "query",
        "name" : "period",
        "required" : false,
        "schema" : {
          "default" : "ALL",
          "enum" : [ "CURRENT", "HISTORIC", "ALL" ],
          "type" : "string"
        },
        "style" : "form"
      },
      "HeaderXV" : {
        "description" : "Version of the API endpoint requested by the client. Must be set to a positive integer. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If the value of [_x-min-v_](#request-headers) is equal to or higher than the value of [_x-v_](#request-headers) then the [_x-min-v_](#request-headers) header should be treated as absent. If all versions requested are not supported then the endpoint should respond with a `406 Not Acceptable`. See [HTTP Headers](#request-headers).",
        "explode" : false,
        "in" : "header",
        "name" : "x-v",
        "required" : true,
        "schema" : {
          "type" : "string"
        },
        "style" : "simple"
      },
      "HeaderXMinV" : {
        "description" : "Minimum version of the API endpoint requested by the client. Must be set to a positive integer if provided. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If all versions requested are not supported then the endpoint should respond with a `406 Not Acceptable`.",
        "explode" : false,
        "in" : "header",
        "name" : "x-min-v",
        "required" : false,
        "schema" : {
          "type" : "string"
        },
        "style" : "simple"
      }
    },
    "requestBodies" : {
      "RequestMetaDataUpdate" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/RequestMetaDataUpdateV1"
            }
          }
        },
        "required" : true
      }
    },
    "responses" : {
      "MetadataUpdate200" : {
        "content" : {
          "application/json" : {
            "schema" : { }
          }
        },
        "description" : "Successful response",
        "headers" : {
          "x-v" : {
            "$ref" : "#/components/headers/XV"
          }
        }
      },
      "MetadataUpdate400" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ResponseErrorListV2"
            }
          }
        },
        "description" : "The following error codes **MUST** be supported:<br/><ul class=\"error-code-list\"><li>[400 - Invalid Field](#error-400-field-invalid)</li><li>[400 - Missing Required Field](#error-400-field-missing)</li><li>[400 - Invalid Version](#error-400-header-invalid-version)</li></ul>"
      },
      "MetadataUpdate406" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ResponseErrorListV2"
            }
          }
        },
        "description" : "The following error codes **MUST** be supported:<br/><ul class=\"error-code-list\"><li>[406 - Unsupported Version](#error-406-header-unsupported-version)</li></ul>"
      },
      "GetMetrics200" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ResponseMetricsListV5"
            }
          }
        },
        "description" : "Successful response",
        "headers" : {
          "x-v" : {
            "$ref" : "#/components/headers/XV"
          }
        }
      },
      "GetMetrics400" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ResponseErrorListV2"
            }
          }
        },
        "description" : "The following error codes **MUST** be supported:<br/><ul class=\"error-code-list\"><li>[400 - Invalid Field](#error-400-field-invalid)</li><li>[400 - Missing Required Field](#error-400-field-missing)</li><li>[400 - Invalid Version](#error-400-header-invalid-version)</li></ul>"
      },
      "GetMetrics406" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ResponseErrorListV2"
            }
          }
        },
        "description" : "The following error codes **MUST** be supported:<br/><ul class=\"error-code-list\"><li>[406 - Unsupported Version](#error-406-header-unsupported-version)</li></ul>"
      }
    },
    "schemas" : {
      "RequestMetaDataUpdateV1" : {
        "properties" : {
          "data" : {
            "$ref" : "#/components/schemas/RequestMetaDataUpdateV1_data"
          },
          "meta" : {
            "$ref" : "#/components/schemas/Meta"
          }
        },
        "required" : [ "data" ],
        "type" : "object"
      },
      "ResponseMetricsListV5" : {
        "properties" : {
          "data" : {
            "$ref" : "#/components/schemas/ResponseMetricsListV5_data"
          },
          "links" : {
            "$ref" : "#/components/schemas/Links"
          },
          "meta" : {
            "$ref" : "#/components/schemas/Meta"
          }
        },
        "required" : [ "data", "links" ],
        "type" : "object"
      },
      "AvailabilityMetricsV2" : {
        "description" : "Availability metrics.",
        "properties" : {
          "aggregate" : {
            "$ref" : "#/components/schemas/AvailabilityMetricsV2_aggregate"
          },
          "unauthenticated" : {
            "$ref" : "#/components/schemas/AvailabilityMetricsV2_unauthenticated"
          },
          "authenticated" : {
            "$ref" : "#/components/schemas/AvailabilityMetricsV2_authenticated"
          }
        },
        "required" : [ "aggregate", "authenticated", "unauthenticated" ],
        "type" : "object"
      },
      "PerformanceMetricsV3" : {
        "description" : "Percentage of calls within the performance thresholds in each performance tier, over time.",
        "properties" : {
          "aggregate" : {
            "$ref" : "#/components/schemas/PerformanceMetricsV3_aggregate"
          },
          "highPriority" : {
            "$ref" : "#/components/schemas/PerformanceMetricsV3_highPriority"
          },
          "largePayload" : {
            "$ref" : "#/components/schemas/PerformanceMetricsV3_largePayload"
          },
          "lowPriority" : {
            "$ref" : "#/components/schemas/PerformanceMetricsV3_lowPriority"
          },
          "unattended" : {
            "$ref" : "#/components/schemas/PerformanceMetricsV3_unattended"
          },
          "unauthenticated" : {
            "$ref" : "#/components/schemas/PerformanceMetricsV3_unauthenticated"
          },
          "secondary" : {
            "$ref" : "#/components/schemas/PerformanceMetricsV3_secondary"
          },
          "largeSecondary" : {
            "$ref" : "#/components/schemas/PerformanceMetricsV3_largeSecondary"
          }
        },
        "required" : [ "highPriority", "largePayload", "lowPriority", "unattended", "unauthenticated" ],
        "type" : "object",
        "x-conditional" : [ "secondary", "largeSecondary" ]
      },
      "PerformancePreviousDays" : {
        "description" : "Array of contiguous hourly metrics for the specified day. Each element represents a 1 hour period starting from 12am-1am. Timezone for determining 12am must be consistent but is at the discretion of the Data Holder.",
        "items" : {
          "$ref" : "#/components/schemas/PerformanceHours"
        },
        "type" : "array"
      },
      "PerformanceHours" : {
        "description" : "Percentage of calls within the performance threshold for the specified hour. `0.0` means 0%. `1.0` means 100%. Must be a positive value or zero.",
        "type" : "string",
        "x-cds-type" : "RateString"
      },
      "InvocationMetricsV3" : {
        "description" : "Number of API calls in each performance tier, over time.",
        "properties" : {
          "unauthenticated" : {
            "$ref" : "#/components/schemas/InvocationMetricsV3_unauthenticated"
          },
          "highPriority" : {
            "$ref" : "#/components/schemas/InvocationMetricsV3_highPriority"
          },
          "lowPriority" : {
            "$ref" : "#/components/schemas/InvocationMetricsV3_lowPriority"
          },
          "unattended" : {
            "$ref" : "#/components/schemas/InvocationMetricsV3_unattended"
          },
          "largePayload" : {
            "$ref" : "#/components/schemas/InvocationMetricsV3_largePayload"
          },
          "secondary" : {
            "$ref" : "#/components/schemas/InvocationMetricsV3_secondary"
          },
          "largeSecondary" : {
            "$ref" : "#/components/schemas/InvocationMetricsV3_largeSecondary"
          }
        },
        "required" : [ "highPriority", "largePayload", "lowPriority", "unattended", "unauthenticated" ],
        "type" : "object",
        "x-conditional" : [ "secondary", "largeSecondary" ]
      },
      "AverageResponseMetricsV2" : {
        "description" : "Average response time in seconds, at millisecond resolution, within each performance tier.",
        "properties" : {
          "unauthenticated" : {
            "$ref" : "#/components/schemas/AverageResponseMetricsV2_unauthenticated"
          },
          "highPriority" : {
            "$ref" : "#/components/schemas/AverageResponseMetricsV2_highPriority"
          },
          "lowPriority" : {
            "$ref" : "#/components/schemas/AverageResponseMetricsV2_lowPriority"
          },
          "unattended" : {
            "$ref" : "#/components/schemas/AverageResponseMetricsV2_unattended"
          },
          "largePayload" : {
            "$ref" : "#/components/schemas/AverageResponseMetricsV2_largePayload"
          },
          "secondary" : {
            "$ref" : "#/components/schemas/AverageResponseMetricsV2_secondary"
          },
          "largeSecondary" : {
            "$ref" : "#/components/schemas/AverageResponseMetricsV2_largeSecondary"
          }
        },
        "required" : [ "highPriority", "largePayload", "lowPriority", "unattended", "unauthenticated" ],
        "type" : "object",
        "x-conditional" : [ "secondary", "largeSecondary" ]
      },
      "SessionCountMetricsV2" : {
        "description" : "Session counts, over time. Note that a session is defined as the provisioning of an Access Token.",
        "properties" : {
          "currentDay" : {
            "description" : "Session count for current day.",
            "type" : "integer",
            "x-cds-type" : "NaturalNumber"
          },
          "previousDays" : {
            "description" : "Session count for previous days. The first element indicates yesterday and so on. A maximum of seven entries is required if available.",
            "items" : {
              "type" : "integer",
              "x-cds-type" : "NaturalNumber"
            },
            "type" : "array"
          }
        },
        "type" : "object",
        "x-conditional" : [ "currentDay", "previousDays" ]
      },
      "AverageTPSMetricsV2" : {
        "description" : "Average transactions per second, over time.",
        "properties" : {
          "aggregate" : {
            "$ref" : "#/components/schemas/AverageTPSMetricsV2_aggregate"
          },
          "unauthenticated" : {
            "$ref" : "#/components/schemas/AverageTPSMetricsV2_unauthenticated"
          },
          "authenticated" : {
            "$ref" : "#/components/schemas/AverageTPSMetricsV2_authenticated"
          }
        },
        "required" : [ "aggregate", "authenticated", "unauthenticated" ],
        "type" : "object"
      },
      "PeakTPSMetricsV2" : {
        "description" : "Peak transactions per second, over time.",
        "properties" : {
          "aggregate" : {
            "$ref" : "#/components/schemas/PeakTPSMetricsV2_aggregate"
          },
          "unauthenticated" : {
            "$ref" : "#/components/schemas/PeakTPSMetricsV2_unauthenticated"
          },
          "authenticated" : {
            "$ref" : "#/components/schemas/PeakTPSMetricsV2_authenticated"
          }
        },
        "required" : [ "aggregate", "authenticated", "unauthenticated" ],
        "type" : "object"
      },
      "ErrorMetricsV2" : {
        "description" : "Number of calls resulting in error, over time.",
        "properties" : {
          "aggregate" : {
            "$ref" : "#/components/schemas/ErrorMetricsV2_aggregate"
          },
          "unauthenticated" : {
            "$ref" : "#/components/schemas/ErrorMetricsV2_unauthenticated"
          },
          "authenticated" : {
            "$ref" : "#/components/schemas/ErrorMetricsV2_authenticated"
          }
        },
        "required" : [ "aggregate", "authenticated", "unauthenticated" ],
        "type" : "object"
      },
      "RejectionMetricsV3" : {
        "description" : "Number of calls rejected due to traffic thresholds, over time.",
        "properties" : {
          "authenticated" : {
            "$ref" : "#/components/schemas/RejectionMetricsV3_authenticated"
          },
          "unauthenticated" : {
            "$ref" : "#/components/schemas/RejectionMetricsV3_unauthenticated"
          }
        },
        "required" : [ "authenticated", "unauthenticated" ],
        "type" : "object"
      },
      "SecondaryHolderMetricsV2" : {
        "description" : "Errors and rejections received by the primary data holder from the secondary data holder. Mandatory for data holders designated for a Shared Responsibility Data Request data cluster.",
        "properties" : {
          "errors" : {
            "$ref" : "#/components/schemas/SecondaryHolderMetricsV2_errors"
          },
          "rejections" : {
            "$ref" : "#/components/schemas/SecondaryHolderMetricsV2_rejections"
          }
        },
        "required" : [ "errors", "rejections" ],
        "type" : "object"
      },
      "AuthorisationMetricsV2" : {
        "description" : "Authorisation counts for the data holder.",
        "properties" : {
          "activeAuthorisationCount" : {
            "$ref" : "#/components/schemas/AuthorisationMetricsV2_activeAuthorisationCount"
          },
          "newAuthorisationCount" : {
            "$ref" : "#/components/schemas/AuthorisationMetricsV2_newAuthorisationCount"
          },
          "revokedAuthorisationCount" : {
            "$ref" : "#/components/schemas/AuthorisationMetricsV2_revokedAuthorisationCount"
          },
          "amendedAuthorisationCount" : {
            "$ref" : "#/components/schemas/AuthorisationMetricsV2_amendedAuthorisationCount"
          },
          "expiredAuthorisationCount" : {
            "$ref" : "#/components/schemas/AuthorisationMetricsV2_expiredAuthorisationCount"
          },
          "abandonedConsentFlowCount" : {
            "$ref" : "#/components/schemas/AuthorisationMetricsV2_abandonedConsentFlowCount"
          },
          "abandonmentsByStage" : {
            "$ref" : "#/components/schemas/AuthorisationMetricsV2_abandonmentsByStage"
          }
        },
        "required" : [ "abandonedConsentFlowCount", "abandonmentsByStage", "activeAuthorisationCount", "amendedAuthorisationCount", "expiredAuthorisationCount", "newAuthorisationCount", "revokedAuthorisationCount" ],
        "type" : "object"
      },
      "Links" : {
        "properties" : {
          "self" : {
            "description" : "Fully qualified link to this API call.",
            "type" : "string",
            "x-cds-type" : "URIString"
          }
        },
        "required" : [ "self" ],
        "type" : "object"
      },
      "Meta" : {
        "type" : "object"
      },
      "ResponseErrorListV2" : {
        "properties" : {
          "errors" : {
            "description" : "List of errors.",
            "items" : {
              "$ref" : "#/components/schemas/ErrorV2"
            },
            "type" : "array"
          }
        },
        "required" : [ "errors" ],
        "type" : "object"
      },
      "ErrorV2" : {
        "properties" : {
          "code" : {
            "description" : "The code of the error encountered. Where the error is specific to the respondent, an application-specific error code, expressed as a string value. If the error is application-specific, the URN code that the specific error extends must be provided in the _meta_ object. Otherwise, the value is the error code URN.",
            "type" : "string"
          },
          "title" : {
            "description" : "A short, human-readable summary of the problem that **MUST NOT** change from occurrence to occurrence of the problem represented by the error code.",
            "type" : "string"
          },
          "detail" : {
            "description" : "A human-readable explanation specific to this occurrence of the problem.",
            "type" : "string"
          },
          "meta" : {
            "$ref" : "#/components/schemas/ErrorV2_meta"
          }
        },
        "required" : [ "code", "detail", "title" ],
        "type" : "object",
        "x-conditional" : [ "meta" ]
      },
      "RequestMetaDataUpdateV1_data" : {
        "properties" : {
          "action" : {
            "default" : "REFRESH",
            "description" : "The action to take for the meta data. At the moment the only option is `REFRESH` which requires the data holder to call the ACCC to refresh meta data as soon as practicable.",
            "enum" : [ "REFRESH" ],
            "type" : "string"
          }
        },
        "required" : [ "action" ],
        "type" : "object"
      },
      "ResponseMetricsListV5_data" : {
        "properties" : {
          "requestTime" : {
            "description" : "The date and time that the metrics in this payload were requested.",
            "type" : "string",
            "x-cds-type" : "DateTimeString"
          },
          "availability" : {
            "$ref" : "#/components/schemas/AvailabilityMetricsV2"
          },
          "performance" : {
            "$ref" : "#/components/schemas/PerformanceMetricsV3"
          },
          "invocations" : {
            "$ref" : "#/components/schemas/InvocationMetricsV3"
          },
          "averageResponse" : {
            "$ref" : "#/components/schemas/AverageResponseMetricsV2"
          },
          "sessionCount" : {
            "$ref" : "#/components/schemas/SessionCountMetricsV2"
          },
          "averageTps" : {
            "$ref" : "#/components/schemas/AverageTPSMetricsV2"
          },
          "peakTps" : {
            "$ref" : "#/components/schemas/PeakTPSMetricsV2"
          },
          "errors" : {
            "$ref" : "#/components/schemas/ErrorMetricsV2"
          },
          "rejections" : {
            "$ref" : "#/components/schemas/RejectionMetricsV3"
          },
          "customerCount" : {
            "description" : "Number of customers with active authorisations at the time of the call.",
            "type" : "integer",
            "x-cds-type" : "NaturalNumber"
          },
          "recipientCount" : {
            "description" : "Number of Data Recipient Software Products with active authorisations at the time of the call.",
            "type" : "integer",
            "x-cds-type" : "NaturalNumber"
          },
          "secondaryHolder" : {
            "$ref" : "#/components/schemas/SecondaryHolderMetricsV2"
          },
          "authorisations" : {
            "$ref" : "#/components/schemas/AuthorisationMetricsV2"
          }
        },
        "required" : [ "authorisations", "availability", "averageResponse", "averageTps", "customerCount", "errors", "invocations", "peakTps", "performance", "recipientCount", "rejections", "requestTime", "sessionCount" ],
        "type" : "object",
        "x-conditional" : [ "secondaryHolder" ]
      },
      "AvailabilityMetricsV2_aggregate" : {
        "description" : "Aggregated availability metrics.",
        "properties" : {
          "currentMonth" : {
            "description" : "Percentage availability of the CDR platform so far for the current calendar month. `0.0` means 0%. `1.0` means 100%. Must be a positive value or zero.",
            "type" : "string",
            "x-cds-type" : "RateString"
          },
          "previousMonths" : {
            "description" : "Percentage availability of the CDR platform for previous calendar months. The first element indicates the last month and so on. A maximum of twelve entries is required if available. `0.0` means 0%. `1.0` means 100%. Values must be a positive or zero.",
            "items" : {
              "type" : "string",
              "x-cds-type" : "RateString"
            },
            "type" : "array"
          }
        },
        "type" : "object",
        "x-conditional" : [ "currentMonth", "previousMonths" ]
      },
      "AvailabilityMetricsV2_unauthenticated" : {
        "description" : "Availability metrics for the unauthenticated aspects of the CDR regime.",
        "properties" : {
          "currentMonth" : {
            "description" : "Percentage availability of the CDR platform so far for the current calendar month. `0.0` means 0%. `1.0` means 100%. Must be a positive value or zero.",
            "type" : "string",
            "x-cds-type" : "RateString"
          },
          "previousMonths" : {
            "description" : "Percentage availability of the CDR platform for previous calendar months. The first element indicates the last month and so on. A maximum of twelve entries is required if available. `0.0` means 0%. `1.0` means 100%. Values must be a positive or zero.",
            "items" : {
              "type" : "string",
              "x-cds-type" : "RateString"
            },
            "type" : "array"
          }
        },
        "type" : "object",
        "x-conditional" : [ "currentMonth", "previousMonths" ]
      },
      "AvailabilityMetricsV2_authenticated" : {
        "description" : "Availability metrics for the authenticated aspects of the CDR regime.",
        "properties" : {
          "currentMonth" : {
            "description" : "Percentage availability of the CDR platform so far for the current calendar month. `0.0` means 0%. `1.0` means 100%. Must be a positive value or zero.",
            "type" : "string",
            "x-cds-type" : "RateString"
          },
          "previousMonths" : {
            "description" : "Percentage availability of the CDR platform for previous calendar months. The first element indicates the last month and so on. A maximum of twelve entries is required if available. `0.0` means 0%. `1.0` means 100%. Values must be a positive or zero.",
            "items" : {
              "type" : "string",
              "x-cds-type" : "RateString"
            },
            "type" : "array"
          }
        },
        "type" : "object",
        "x-conditional"

# --- truncated at 32 KB (88 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cdr-energy/refs/heads/main/openapi/cdr-admin-openapi.json