AEMO TLS Certificate Mgmt v1

The TLS Certificate Management API allows authorised participants to self-manage their AEMO-signed TLS certificates. AEMO's public API catalogue lists 8 operation(s) for this API, gateway-routed under the path prefix /v1/TlsCertificateMgmt. AEMO's own openapi-link export for this API is a shell — it declares paths: {} with zero operations and names an internal host — so the 8 operation(s) in the OpenAPI captured here were harvested from AEMO's developer-portal operations endpoints (https://dev.aemo.com.au/developer/apis/tls-certificate-mgmt-v1/operations?api-version=2022-04-01-preview), complete with parameters, headers, response codes and response examples. Harvested 2026-07-27 (HTTP 200).

OpenAPI Specification

aemo-tls-certificate-mgmt-v1-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: TLS Certificate Mgmt v1
  description: "The TLS Certificate Management API allows authorised participants to self-manage their\
    \ AEMO-signed TLS certificates. This API provides the following features:\n- Retrieve a list of your\
    \ AEMO-signed TLS certificates and orders\n- Download a specific TLS certificate\n- Generate a new\
    \ TLS certificate\n- Reissue a TLS certificate\n- Renew a soon-to-expire TLS certificate\n- Revoke\
    \ a TLS certificate\n    \n\n# Status\nThis documentation presents the TLS Certificate Management\
    \ API evolving design. It is updated as the technical requirements are streamlined.\n# Assumed knowledge\n\
    - RESTful API practices and JSON basics.\n    \n\n# Prerequisites\nBefore you can use the TLS Certificate\
    \ Management API you must:\n1. Have a Participant ID. If your company is a Registered Participant,\
    \ it is set up during the registration process. Have a Participant ID with an effective date of registration.\n\
    2. Have a user ID and password with access rights provided by your company's participant administrator.\
    \ For details, see user rights access below.\n3. Have an AEMO-signed [TLS certificate](https://portal.aemo.com.au/help/Content/API%20Reference/Manage%20TLS%20Certificates.html).\
    \ If you need to get an AEMO-signed TLS certificate for the first time you can do this through the\
    \ [Markets Portal](https://portal.prod.nemnet.net.au), or raise a request for a TLS certificate through\
    \ the [Participant Portal](https://aemo.service-now.com/participantportal/).\n    \n\n# API portal\
    \ and Open API Specification\n[TLS Certificate Management Open API Specification](https://dev.aemo.com.au/api-details#api=tls-certificate-mgmt-v1)\n\
    # Authentication and Authorization methods\n## TLS Certificates\nThis API is protected by MTLS authentication.\
    \ A valid AEMO-signed TLS certificate is required to access this API. See Prerequisites above on how\
    \ to get an AEMO-signed TLS certificate for the first time.\n## User rights access\nParticipant administrators\
    \ provide access to the TLS Certificate Management API using the **TLS_CERTIFICATE_MANAGEMENT** entity.\
    \ See the [User Rights Management](https://portal.prod.nemnet.net.au/help/Content/UserRightsManagement/URM.htm)\
    \ guide (URM) for details on managing URM functions.\n\nUsers must be assigned rights that have access\
    \ to the entity **TLS_CERTIFICATE_MANAGEMENT**. The API allows two privileges (access levels) of access\
    \ rights for that entity:\n- **Delete right** - all endpoints are available to users with the Delete\
    \ right.\n- **Read right** - all GET endpoints are available to users under this right. Users with\
    \ this right cannot create, revoke, reissue or renew TLS certificates. Rights created with Create\
    \ and Update only have access to Read right features.\n    \n\nWhen calling this API, your username\
    \ must be subscribed to a valid right under the **TLS_CERTIFICATE_MANAGEMENT** entity. You authorize\
    \ your identity using Base64 encoding of your username and password, separated by a colon, in the\
    \ Basic Auth header. For example:\n\n`Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==`\n# Throttling\
    \ and quotas\nTo control traffic, AEMO implements Throttling on all API Endpoint requests. Also, some\
    \ endpoints have a specific quota of requests. If a Participant ID requests exceed the Throttling\
    \ limit a HTTP 429 or 422 response returns. For more details, see the examples under each request.\
    \ <table>\n    <tr>\n        <td>Endpoint</td>\n        <td>Limits</td>\n    </tr>\n    <tr>\n   \
    \     <td>All endpoints</td>\n        <td>6 requests per minute per participantId.\n        <br>The\
    \ participantId is identified from the X-InitiatingParticipantID request header parameter.\n     \
    \   <br>The API has a general spike-arrest limit of 6 requests per minute per participantId. This\
    \ is imposed across all endpoints of the API.</td>\n    </tr>\n    <tr>\n        <td>POST `all endpoints`</td>\n\
    \        <td>10 requests per month per participantId.\n        <br>The participantId is identified\
    \ from the X-InitiatingParticipantID request header parameter.\n        <br>For each participantId\
    \ there are only 20 POST requests that can be made to the API per month.</td>\n    </tr>\n    <tr>\n\
    \        <td>GET `all endpoints`</td>\n        <td>60 requests per month per participantId.\n    \
    \    <br>The participantId is identified from the X-InitiatingParticipantID request header parameter.\n\
    \        <br>For each participantId there are only 60 GET requests that can be made to the API per\
    \ month.</td>\n    </tr>\n    <tr>\n        <td>POST `/certificates`</td>\n        <td>1 request per\
    \ participantId per environment.    \n        <br>The participantId is identified from the `X-InitiatingParticipantID`\
    \ request header parameter.\n        <br>The environment is identified from the value of the environment\
    \ key in the request body.\n        <br>A participantId can only have one set of TLS certificates\
    \ (one PreProd certificate and one Prod certificate).\n        <br>This restriction is due to costs\
    \ associated with providing TLS certificates. If more than one certificate is required to differentiate\
    \ system access to AEMO systems you can use the `/order/{order-id}/reissue` endpoint.\n        <br>Participants\
    \ systems must manage this Throttling limit because if you submit multiple JSON requests for the same\
    \ participantId at the same time, AEMO may reject some.</td>\n    </tr>\n</table>\n\n# Response codes\n\
    For detailed examples of response codes see the provided example under each request.\n# URLs\nThe\
    \ API is available over the internet on the following base URLs:\n<table>\n  <tr>\n      <td><b>Environment</b></td>\n\
    \      <td><b>Base URL</b></td>\n  </tr>\n  <tr>\n      <td>PreProduction</td>\n      <td><a href=\"\
    https://partner.api.preprod.aemo.com.au/v1/TLSCertificateManagement\">https://partner.api.preprod.aemo.com.au/v1/TLSCertificateManagement</a></td>\n\
    \  </tr>\n  <tr>\n      <td>Production</td>\n      <td><a href=\"https://partner.api.aemo.com.au/v1/TLSCertificateManagement\"\
    >https://partner.api.aemo.com.au/v1/TLSCertificateManagement</a></td>\n  </tr>\n</table>\n\n\n## Environment\
    \ details\n### PreProduction\nTLS Certificates created in the PreProduction environment will be suffixed\
    \ with \"MOCK\" in the commonName, and are mock certificates only. These certificates will automatically\
    \ expire after 3-days and are not usable for accessing any AEMO systems.\n### Production\nTLS Certificates\
    \ created in the Production environment will be suffixed with either \"PROD\" or \"NONPROD\" in the\
    \ commonName depending on the environment entered in the API request. These certificates will automatically\
    \ expire after 3-years and are used for accessing MTLS-protected AEMO systems (both PreProduction\
    \ and Production systems).\n\nNONPROD certificates can only be used for accessing AEMO Non-Production\
    \ systems (for example APIs on; [https://partner.api.preprod.aemo.com.au](https://partner.api.preprod.aemo.com.au),\
    \ [https://apis.preprod.aemo.com.au:9319](https://apis.preprod.aemo.com.au:9319), or [https://apis.preprod.marketnet.net.au:9319](https://apis.preprod.marketnet.net.au:9319)).\
    \ You will need to use the PreProd certificate to access AEMO Non-Production environments that are\
    \ MTLS protected. The NONPORD certificate will be issued by the certificate authority AEMO-ICA-TEST\
    \ G1.\n\nPROD certificates can only be used for accessing AEMO Production systems (for example APIs\
    \ on; [https://partner.api.aemo.com.au](https://partner.api.aemo.com.au), [https://apis.aemo.com.au:9319](https://apis.aemo.com.au:9319),\
    \ or [https://apis.marketnet.net.au:9319](https://apis.marketnet.net.au:9319)). You will need to use\
    \ the Prod certificate to access AEMO Production environments that are MTLS protected. The PROD certificate\
    \ will be issued by the certificate authority AEMO-ICA-MARKET G1.\n\n# Glossary\n- CA - Certificate\
    \ Authority\n- PKI - Public Key Infrastructure\n- TLS - Transport Layer Security\n- X.509v3 - The\
    \ specific TLS certificate standard used by AEMO"
  termsOfService: https://dev.aemo.com.au/terms
  version: '3.0'
  x-origin:
  - format: openapi
    source: AEMO API Management developer portal
    url: https://dev.aemo.com.au/developer/apis/tls-certificate-mgmt-v1/operations?api-version=2022-04-01-preview
servers:
- url: https://api-prd.aemo.local/v1/TlsCertificateMgmt
paths:
  /certificates:
    post:
      operationId: createANewCertificate
      summary: Create a new certificate
      tags:
      - TLS Certificate Mgmt v1
      description: "Generate a new certificate and a new order by providing a valid Certificate Signing\
        \ Request (CSR) and an environment (`non-prod` or `production`) in the request body. This certificate\
        \ is created under your Participant ID.\n        \nGenerating the CSR depends on your server and\
        \ operating system. For more information, see [CSR requirements](https://portal.aemo.com.au/help/Content/TLSCertificateManagement/CSR%20requirements.html)."
      parameters:
      - name: X-InitiatingParticipantID
        in: header
        required: true
        schema:
          type: string
        description: The participant ID who the request is from.
      - name: Accept
        in: header
        required: true
        schema:
          type: string
          enum:
          - application/json
        description: The API on accepts `application/json` content.
      requestBody:
        content:
          application/json:
            example:
              csr: '-----BEGIN CERTIFICATE REQUEST----- MIIDFjCCAf4CAQAwgbkxCzAJBgNVBAYTAkFVMREwDwYDVQQIDAhDb3JjYWlnaDES
                MBAGA1UEBwwJRGVpcyBNdWluMSIwIAYDVQQKDBlTb25yYWkgQ29uc3VsdGluZyBQ dHkgTHRkMSYwJAYDVQQLDB1HZXQgeW91ciBBUEkgcHJvZ3JhbSBvbiB0cmFjazEU
                MBIGA1UEAwwLU09OUkFJLVByb2QxITAfBgkqhkiG9w0BCQEWEmluZm9Ac29ucmFp LmNvbS5hdTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKpMFG4WhHKX
                G6yyY//sDzgW1WujgtJLhWu32uWtH0l4VDEOSNgFTszKfpSfmblf5WOpxR5eqM52 Fy0/yNqAclUWVSqKK7QDbWVsd8wdOfmAD9d3Ex7xQvouLtNGOyo2JEXwryULeM65
                D9Vu+grxVN55vhUUHA3Xt9dYBb+M/gplwt/t5KswgtuaDzktW+X407QwAmy/RYsU Jf/nDdPyna+/0z3ByprzgYaA4gaKOZMGjq3nrBIR7iO0AQbmo6R1Pv1k+kduue2S
                WCQkiA9y6RLxzM/Sg9wUO9uNK0A+5v0TKQm8gDweISdH60DRGSHgC4int5ncbE5j 2/ZSxtJpxl8CAwEAAaAXMBUGCSqGSIb3DQEJAjEIDAZTb25yYWkwDQYJKoZIhvcN
                AQELBQADggEBAJek88Bm7LLYHbI9ft99ibR8l1wSCKhrdvJcyNjhnriMe+X62nq3 vxb32nPPilA0c541zbOlOlFcxlh5jk9FB/csuYNGGiQfkXHSS51IidDQFp20O2cl
                nFAl3lsLMZrEE8Cu1r+7AYEOrKTN8Qj76uejPzLpmBEGje5lo5XqDEryBoyg4DDa Va++leYdxbPwoTCTzsTDoZsVEikGjD6MVT3eMNwXEe334v6T3dJlWNSpTJvgA8qr
                OC31BRhiAjCIJ0H7yPcacZ8wE6n/iI/9QOPgPITHOSl51YNM8Spl74MG49A1PTfj hnoEsWrXPakyOfUYDIZmbhMe+L50sfqyfEg=
                -----END CERTIFICATE REQUEST-----'
              usage: production
        description: Used to send the CSR to AEMO. CSR must NOT have the challenge password set and must
          have a key size of 2048 bits RSA with a SHA-2 signature algorithm
      responses:
        '201':
          description: A successful response with confirmation of Certificate creation, and the TLS certificate
            itself
          content:
            application/json:
              example:
                transactionId: b6fb4e11-627a-4837-9632-e116dcb83882
                data:
                  detail: Your order and certificate has been successfully created.
                  orderId: '356515923'
                  certificateId: '357749310'
                  certificateCommonName: EASTENGY-Prod
                  certificate: "-----BEGIN CERTIFICATE-----\r\nMIIFVjCCBD6gAwIBAgIQDipm2I0uCGYERjhEAFrBxDANBgkqhkiG9w0BAQsFADBT\r\
                    \nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMS0wKwYDVQQDEyRE\r\naWdpQ2VydCBUZXN0IFNIQTIgSW50ZXJtZWRpYXRlIENBLTEwHhcNMjMwMjAyMDAw\r\
                    \nMDAwWhcNMjMwMjA0MjM1OTU5WjBqMQswCQYDVQQGEwJBVTERMA8GA1UECBMIVmlj\r\ndG9yaWExEjAQBgNVBAcTCU1lbGJvdXJuZTENMAsGA1UEChMEQUVNTzElMCMGA1UE\r\
                    \nAwwcRE9ETy1TSVRfMjAyMzAyMDJhX0FQSV9QMjMwNDCCASIwDQYJKoZIhvcNAQEB\r\nBQADggEPADCCAQoCggEBAJ61Inyu2u6P6C2wFDIQgQUpIiXXWdhSo/1hMPEU5RXZ\r\
                    \niserktfVcZUuF+2tQ6ma4IOiRtgRGl9k/KsuJmd+5fPbsyaqsrDT/QnM65KXTlq9\r\nKkybd4TY3WFfv1BCEsC8E72EN3JMrD1GyouscnwyvUDRvktwrENjCon4Ig99g9md\r\
                    \nkMbS01lBD+3Auw8j/sbfD5T5q9hi5VtUszQ409FwIxmSwmGZTS2rSMFBH3Ms+Ld3\r\n8HaaB6UbPNks85gqMWgzZpAlu9kYXnRbhf5cTjW7bPOO8wdUWeNEXWMjB4XGerIP\r\
                    \nLeyy3l/MchBEaDxDZ85cC7WZb49XzptC+3bhGih6qmcCAwEAAaOCAg0wggIJMB8G\r\nA1UdIwQYMBaAFNZN+TlgbHPDIvWtMAwvoNXKdUoqMB0GA1UdDgQWBBQRBbe3DpKB\r\
                    \nRVCzzaUfVQ5EGnxNqjAnBgNVHREEIDAeghxET0RPLVNJVF8yMDIzMDIwMmFfQVBJ\r\nX1AyMzA0MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB\r\
                    \nBQUHAwIwgZMGA1UdHwSBizCBiDBCoECgPoY8aHR0cDovL2NybDMuZGlnaWNlcnQu\r\nY29tL0RpZ2lDZXJ0VGVzdFNIQTJJbnRlcm1lZGlhdGVDQTEuY3JsMEKgQKA+hjxo\r\
                    \ndHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRUZXN0U0hBMkludGVybWVk\r\naWF0ZUNBMS5jcmwwQgYDVR0gBDswOTA3BgpghkgBhv1sYwEBMCkwJwYIKwYBBQUH\r\
                    \nAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCBhgYIKwYBBQUHAQEEejB4\r\nMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wUAYIKwYBBQUH\r\
                    \nMAKGRGh0dHA6Ly9jYWNlcnRzLnRlc3QuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VGVz\r\ndFNIQTJJbnRlcm1lZGlhdGVDQTEuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcN\r\
                    \nAQELBQADggEBADzp62eRimkv4Xk5rs8zKpm1C0ACjDqNKI3+yZyHNnsqeJl/UbEU\r\nsy9xJ96scAAk3TEdSOzCQIDrN8buNz/BtMWr0YhAyOCmjhoO+sEetRUddWruSHlO\r\
                    \neAh5y3HW9bu2fmcN03pLC4LawRKBGNTPZ4GYYhlw23Pw0OToQEylEU+XmKC0dsQO\r\nhBv1Qsu9laJf3Rets/5Y0QfpfwrE12Y1vv6hM8PlEQqGTAuToRC9uVJ2ZgH2wCn0\r\
                    \n0OL/zk9SONI5ApqzTr6nJF7PwpqdTjUOnvKbISrd164WpnJixfzD0zT8vkYMZiA9\r\nJdX4NKBeYZrfE+O1IJTY4EoE6OvoHsjFslE=\r\
                    \n-----END CERTIFICATE-----\r\n"
        '400':
          description: Bad Request
          content:
            application/json:
              examples:
                '400.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: Invalid JSON payload.
                '400.02':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: Missing or invalid header, or query parameter.
                '400.03':
                  description: The certificateCommonName provided in the body does not match the existing
                    order certificateCommonName.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: 'Property: certificateCommonName must match the original certificate.'
                '400.04':
                  description: Mismatched certificateId to orderId. The certificate must belong to that
                    order for a successful request.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: 'Invalid: the ''certificateId'' does not belong to the ''orderId'' provided
                        in the request.'
                '400.05':
                  description: The order has already been renewed.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: Order has already been renewed.
                '400.06':
                  description: The certificate in the order has already been revoked.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: already_revoked
        '401':
          description: Unauthorised
          content:
            application/json:
              examples:
                '401.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '401'
                      title: Unauthorized
                      details: Invalid or missing credentials, or token.
        '403':
          description: Insufficient Privileges
          content:
            application/json:
              examples:
                '403.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Forbidden
                      details: Insufficient privileges.
                '403.02':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Quota Exceeded
                      details: Out of call volume quota. Quota will be replenished in 27.18:05:37.
                '403.03':
                  description: User is not authorised to manage given certificate order.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Forbidden
                      details: Not authorised to manage the provided ID
                '403.04':
                  description: Authorisation check failed. Check whether user has valid URM rights.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Forbidden
                      details: Auth check failed
                '403.05':
                  description: Pre-Authorisation check failed. Invalid user, Participant ID or user and
                    Participant ID combination.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Forbidden
                      details: Session-PreAuthorization failed.
                '403.06':
                  description: User does not have valid URM rights to complete the request. Check user
                    URM rights.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Forbidden
                      details: Insufficient privileges to complete X.509 certificate request.
        '404':
          description: Not Found
          content:
            application/json:
              examples:
                '404.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '404'
                      title: Not found
                      details: The specified resource does not exist.
        '405':
          description: Invalid Method
          content:
            application/json:
              examples:
                '405.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '405'
                      title: Invalid method
                      details: Input request HTTP method is DELETE, but operation accepts only GET, POST,
                        PATCH, PUT.
        '413':
          description: Content Too Large
          content:
            application/json:
              examples:
                '413.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '413'
                      title: Content Too Large
                      details: Maximum allowed size for the request body is 10485760 bytes (10 MB). This
                        request has size of 16MB
        '422':
          description: Too Many Requests
          content:
            application/json:
              examples:
                '422.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '422'
                      title: Unprocessable Entity
                      details: 'Requested certificate orders exceeds allowed quota. '
        '429':
          description: Too Many Requests
          content:
            application/json:
              examples:
                '429.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '429'
                      title: Too many requests
                      details: Exceeded the maximum number of requests within a specified time frame.
        '500':
          description: Internal Server Error
          content:
            application/json:
              examples:
                '500.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '500'
                      title: Internal system error
                      details: An internal error has occured.
                '500.02':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '500'
                      title: Internal System Error
                      details: Unexpected Server Error, please report to support!
        '502':
          description: Bad Gateway
          content:
            application/json:
              examples:
                '502.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '502'
                      title: Bad gateway
                      details: Bad gateway.
        '503':
          description: Service Unavailable
          content:
            application/json:
              examples:
                '503.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '503'
                      title: Service unavailable
                      details: Service unavailable.
        '504':
          description: Gateway Timeout
          content:
            application/json:
              examples:
                '504.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '504'
                      title: Gateway timeout
                      details: Gateway timeout.
  /certificates/{certificate-id}/download:
    get:
      operationId: downloadACertificate
      summary: Download a certificate
      tags:
      - TLS Certificate Mgmt v1
      description: Download a certificate, and the certificate chain, returned in PEM format.
      parameters:
      - name: certificate-id
        in: path
        required: true
        schema:
          type: string
        description: The specific ID of a Certificate
      - name: X-InitiatingParticipantID
        in: header
        required: true
        schema:
          type: string
        description: The participant ID who the request is from.
      - name: Accept
        in: header
        required: true
        schema:
          type: string
          enum:
          - application/json
        description: The API on accepts `application/json` content.
      responses:
        '200':
          description: A successful response with details on your specified certificate
          content:
            application/x-pem-file:
              examples:
                pem-response:
                  value: '-----BEGIN CERTIFICATE----- MIIFPDCCBCSgAwIBAgIQCg5bHWn9d4Kv7kPbcgZv0DANBgkqhkiG9w0BAQsFADBP
                    MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMSkwJwYDVQQDEyBE aWdpQ2VydCBUTFMgUlNBIFNIQTI1NiAyMDIwIENBMTAeFw0yMjA4MDgwMDAwMDBa
                    Fw0yMjA5MDYyMzU5NTlaMGsxCzAJBgNVBAYTAkFVMRUwEwYDVQQHEwxCdXJ3b29k IEVhc3QxIjAgBgNVBAoTGVNvbnJhaSBDb25zdWx0aW5nIFB0eSBMdGQxITAfBgNV
                    BAMTGGFwaXguc29ucmFpY29uc3VsdGluZy5pbzCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBANINNwHwCM+KviG8Higu+ywXaHRPqpc1t8Y2rwxCl2QxCNqp
                    FbKLgWol4VB3WnzH79qJyxkxNIMKqN5l0UNmSPhk37DtJ2kAjqSZ06X3Mg/lt6pr /3tfF2FA2x1ILsVrha2l9hGU7ZpDC1ZGn5GlPCYwOaHQj25EholDb9G7VVbNcp0F
                    GJoiuNX5LR2b76I74YdhM7fJlyAW2ZVSd914zsC9s8WTCZi73XRDIWUAbrGUEv1d MSVvVdUR97sFhPtlO8fHMbJ/PhVZlTUy9gBgsFCg85aPFusds7rDgq9OsFSQ/+jk
                    zAYoAcjS4WJVen3pkpwfYrLwPAeyZgIc+z/KlMECAwEAAaOCAfYwggHyMB8GA1Ud IwQYMBaAFLdrouqoqoSMeeq02g+YssWVdrn0MB0GA1UdDgQWBBRAnk6HE6dwhJ1D
                    TH8LAYhLvIKPDTAjBgNVHREEHDAaghhhcGl4LnNvbnJhaWNvbnN1bHRpbmcuaW8w DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjCB
                    jwYDVR0fBIGHMIGEMECgPqA8hjpodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGln aUNlcnRUTFNSU0FTSEEyNTYyMDIwQ0ExLTQuY3JsMECgPqA8hjpodHRwOi8vY3Js
                    NC5kaWdpY2VydC5jb20vRGlnaUNlcnRUTFNSU0FTSEEyNTYyMDIwQ0ExLTQuY3Js MD4GA1UdIAQ3MDUwMwYGZ4EMAQICMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cu
                    ZGlnaWNlcnQuY29tL0NQUzB/BggrBgEFBQcBAQRzMHEwJAYIKwYBBQUHMAGGGGh0 dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBJBggrBgEFBQcwAoY9aHR0cDovL2NhY2Vy
                    dHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VExTUlNBU0hBMjU2MjAyMENBMS0xLmNy dDAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQB7PrwXehYsvFIg2MfDtgfV
                    LZIMQrXPhsgoY2fe/Wa6RNml1APzl3+nJverpkjYprh/McJ0Cvw+mtAbD2MGPVDU XtVxptPLiT/6FRUcROVOWaGoBPLyXaRKQd5M7oL2DrPTr1MvJ4l3SU9myXiYgDsg
                    udz3I8ULS+c9nyHAyII/nDE/w1YFVNz7s+UBUqfw8eXcvjnfFDrS0mutgqD35fun RDXwpdynbs63mmikzrm67oOFiUP81yPyfDYBpLH9UYKf3ZP2xhBvSj91HS9VtiTz
                    4rgQzYaDix45fXRcqtmt8IAlnyxOIB1ujm8jF4SVW1wKK9wSEUmXKjaJarsTKR40 -----END CERTIFICATE-----'
        '400':
          description: Bad Request
          content:
            application/json:
              examples:
                '400.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: Invalid JSON payload.
                '400.02':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: Missing or invalid header, or query parameter.
                '400.03':
                  description: The certificateCommonName provided in the body does not match the existing
                    order certificateCommonName.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: 'Property: certificateCommonName must match the original certificate.'
                '400.04':
                  description: Mismatched certificateId to orderId. The certificate must belong to that
                    order for a successful request.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: 'Invalid: the ''certificateId'' does not belong to the ''orderId'' provided
                        in the request.'
                '400.05':
                  description: The order has already been renewed.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: Order has already been renewed.
                '400.06':
                  description: The certificate in the order has already been revoked.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '400'
                      title: Bad request
                      details: already_revoked
        '401':
          description: Unauthorised
          content:
            application/json:
              examples:
                '401.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '401'
                      title: Unauthorized
                      details: Invalid or missing credentials, or token.
        '403':
          description: Insufficient Privileges
          content:
            application/json:
              examples:
                '403.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Forbidden
                      details: Insufficient privileges.
                '403.02':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Quota Exceeded
                      details: Out of call volume quota. Quota will be replenished in 27.18:05:37.
                '403.03':
                  description: User is not authorised to manage given certificate order.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Forbidden
                      details: Not authorised to manage the provided ID
                '403.04':
                  description: Authorisation check failed. Check whether user has valid URM rights.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Forbidden
                      details: Auth check failed
                '403.05':
                  description: Pre-Authorisation check failed. Invalid user, Participant ID or user and
                    Participant ID combination.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Forbidden
                      details: Session-PreAuthorization failed.
                '403.06':
                  description: User does not have valid URM rights to complete the request. Check user
                    URM rights.
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                    - code: '403'
                      title: Forbidden
                      details: Insufficient privileges to complete X.509 certificate request.
        '404':
          description: Not Found
          content:
            application/json:
              examples:
                '404.01':
                  value:
                    transactionId: a5a8873a-5009-4bf2-a61a-f6c3cd9803b6
                    errors:
                

# --- truncated at 32 KB (104 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/aemo/refs/heads/main/openapi/aemo-tls-certificate-mgmt-v1-openapi.yml