{
  "openapi" : "3.1.0",
  "info" : {
    "title" : "UFTP Participants API V3",
    "description" : "## Changelog\n\n### 3.0.0 (02-02-2026)\n- Get participant by ContractID and role\n- Removed endpoint\n",
    "contact" : {
      "name" : "Energie Data Services Nederland (EDSN) B.V.",
      "email" : "servicedesk@edsn.nl"
    },
    "version" : "v3"
  },
  "servers" : [ {
    "url" : "https://api.gopacs-services.eu"
  }, {
    "url" : "https://api.acc.gopacs-services.eu"
  } ],
  "security" : [ {
    "bearerAuth" : [ ]
  } ],
  "paths" : {
    "/uftp-participants/v3/participants/{uftpDomainName}" : {
      "get" : {
        "tags" : [ "V3 Participant API (address book)" ],
        "summary" : "Get the public key of the UFTP Participant",
        "operationId" : "getParticipantInformationByDomainName",
        "parameters" : [ {
          "name" : "uftpDomainName",
          "in" : "path",
          "description" : "UFTP domain of the participant",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Bad Request",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "404" : {
            "description" : "UFTP participant information not found",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "200" : {
            "description" : "UFTP participant information found",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ParticipantView"
                }
              }
            }
          }
        }
      }
    },
    "/uftp-participants/v3/participants/contracts/{contractId}/roles/{uftpRole}" : {
      "get" : {
        "tags" : [ "V3 Participant API (address book)" ],
        "summary" : "Get the UFTP domain of the UFTP Participant by contract",
        "operationId" : "getParticipantInformationByContractId",
        "parameters" : [ {
          "name" : "contractId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "uftpRole",
          "in" : "path",
          "description" : "UFTP Role (AGR=Aggregator, DSO=Distribution System Operator. Not supported: CRO=Common Reference Operator)",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "AGR", "CRO", "DSO" ]
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "Invalid UFTP Role supplied",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "500" : {
            "description" : "Internal Server Error",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "401" : {
            "description" : "Unauthorized",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "409" : {
            "description" : "Conflict",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "403" : {
            "description" : "Forbidden",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "404" : {
            "description" : "UFTP participant information not found",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorMessage"
                }
              }
            }
          },
          "200" : {
            "description" : "UFTP participant information found",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ParticipantView"
                }
              }
            }
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "ErrorMessage" : {
        "type" : "object",
        "properties" : {
          "errors" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ErrorRecord"
            }
          }
        }
      },
      "ErrorRecord" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "values" : {
            "type" : "object",
            "additionalProperties" : { }
          },
          "message" : {
            "type" : "string"
          }
        }
      },
      "ParticipantView" : {
        "type" : "object",
        "properties" : {
          "domain" : {
            "type" : "string"
          },
          "publicKey" : {
            "type" : "string"
          }
        },
        "required" : [ "domain", "publicKey" ]
      }
    },
    "securitySchemes" : {
      "bearerAuth" : {
        "type" : "http",
        "scheme" : "bearer",
        "bearerFormat" : "JWT"
      }
    }
  }
}