AEMO TLS Certificate Mgmt v1 API

The TLS Certificate Management API allows authorised participants to self-manage their AEMO-signed TLS certificates. This API provides the following features:

Operations 8

POST /certificates Create a new certificate #
GET /certificates/{certificate-id}/download Download a certificate #
GET /orders Get all certificate orders #
GET /orders/{order-id} Get details on a certificate order #
GET /scope Get the scope for a user #
POST /orders/{order-id}/reissue Reissue a certificate #
POST /orders/{order-id}/renewal Renew a certificate #
POST /certificates/{certificate-id}/revoke Revoke a certificate #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/aemo-tls-certificate-mgmt-v1-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

aemo-tls-certificate-mgmt-v1-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: TLS Certificate Mgmt v1 API
  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.\n2. 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\nFor 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
security:
- {}
- apiKeyHeader: []
- apiKeyQuery: []
tags:
- name: 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:'
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-----

                    MIIFVjCCBD6gAwIBAgIQDipm2I0uCGYERjhEAFrBxDANBgkqhkiG9w0BAQsFADBT

                    MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMS0wKwYDVQQDEyRE

                    aWdpQ2VydCBUZXN0IFNIQTIgSW50ZXJtZWRpYXRlIENBLTEwHhcNMjMwMjAyMDAw

                    MDAwWhcNMjMwMjA0MjM1OTU5WjBqMQswCQYDVQQGEwJBVTERMA8GA1UECBMIVmlj

                    dG9yaWExEjAQBgNVBAcTCU1lbGJvdXJuZTENMAsGA1UEChMEQUVNTzElMCMGA1UE

                    AwwcRE9ETy1TSVRfMjAyMzAyMDJhX0FQSV9QMjMwNDCCASIwDQYJKoZIhvcNAQEB

                    BQADggEPADCCAQoCggEBAJ61Inyu2u6P6C2wFDIQgQUpIiXXWdhSo/1hMPEU5RXZ

                    iserktfVcZUuF+2tQ6ma4IOiRtgRGl9k/KsuJmd+5fPbsyaqsrDT/QnM65KXTlq9

                    Kkybd4TY3WFfv1BCEsC8E72EN3JMrD1GyouscnwyvUDRvktwrENjCon4Ig99g9md

                    kMbS01lBD+3Auw8j/sbfD5T5q9hi5VtUszQ409FwIxmSwmGZTS2rSMFBH3Ms+Ld3

                    8HaaB6UbPNks85gqMWgzZpAlu9kYXnRbhf5cTjW7bPOO8wdUWeNEXWMjB4XGerIP

                    Leyy3l/MchBEaDxDZ85cC7WZb49XzptC+3bhGih6qmcCAwEAAaOCAg0wggIJMB8G

                    A1UdIwQYMBaAFNZN+TlgbHPDIvWtMAwvoNXKdUoqMB0GA1UdDgQWBBQRBbe3DpKB

                    RVCzzaUfVQ5EGnxNqjAnBgNVHREEIDAeghxET0RPLVNJVF8yMDIzMDIwMmFfQVBJ

                    X1AyMzA0MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB

                    BQUHAwIwgZMGA1UdHwSBizCBiDBCoECgPoY8aHR0cDovL2NybDMuZGlnaWNlcnQu

                    Y29tL0RpZ2lDZXJ0VGVzdFNIQTJJbnRlcm1lZGlhdGVDQTEuY3JsMEKgQKA+hjxo

                    dHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRUZXN0U0hBMkludGVybWVk

                    aWF0ZUNBMS5jcmwwQgYDVR0gBDswOTA3BgpghkgBhv1sYwEBMCkwJwYIKwYBBQUH

                    AgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzCBhgYIKwYBBQUHAQEEejB4

                    MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wUAYIKwYBBQUH

                    MAKGRGh0dHA6Ly9jYWNlcnRzLnRlc3QuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VGVz

                    dFNIQTJJbnRlcm1lZGlhdGVDQTEuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcN

                    AQELBQADggEBADzp62eRimkv4Xk5rs8zKpm1C0ACjDqNKI3+yZyHNnsqeJl/UbEU

                    sy9xJ96scAAk3TEdSOzCQIDrN8buNz/BtMWr0YhAyOCmjhoO+sEetRUddWruSHlO

                    eAh5y3HW9bu2fmcN03pLC4LawRKBGNTPZ4GYYhlw23Pw0OToQEylEU+XmKC0dsQO

                    hBv1Qsu9laJf3Rets/5Y0QfpfwrE12Y1vv6hM8PlEQqGTAuToRC9uVJ2ZgH2wCn0

                    0OL/zk9SONI5ApqzTr6nJF7PwpqdTjUOnvKbISrd164WpnJixfzD0zT8vkYMZiA9

                    JdX4NKBeYZrfE+O1IJTY4EoE6OvoHsjFslE=

                    -----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:
                    - 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:
                    - 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.
        '429':
          description: Too Many Requests
          content:
            application/json:
              examples:
                '429.01':
 

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