{
  "openapi": "3.0.1",
  "info": {
    "title": "Interoperability Test Bed REST API",
    "description": "REST API for machine-to-machine integration with the Test Bed.",
    "contact": {
      "email": "DIGIT-ITB@ec.europa.eu"
    },
    "version": "1.28.4"
  },
  "externalDocs": {
    "description": "Test Bed user guide",
    "url": "https://www.itb.ec.europa.eu/docs/itb-ou/latest"
  },
  "servers": [
    {
      "url": "http://localhost:9000/api/rest"
    }
  ],
  "tags": [
    {
      "name": "Community management",
      "description": "Operations on communities, organisations and systems."
    },
    {
      "name": "Configuration",
      "description": "Operations relevant to configuration actions."
    },
    {
      "name": "Conformance statements",
      "description": "Operations relevant to conformance statements."
    },
    {
      "name": "Domain management",
      "description": "Operations on domains, specifications, specification groups and actors."
    },
    {
      "name": "Test sessions",
      "description": "Operations on test sessions."
    },
    {
      "name": "Test suites",
      "description": "Operations on test suites."
    }
  ],
  "paths": {
    "/domain": {
      "put": {
        "tags": [
          "Domain management"
        ],
        "summary": "Create a domain.",
        "security": [
          {
            "MasterApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new domain.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDomainRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Domain created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Domain management"
        ],
        "summary": "Update a domain. The target domain is the one linked to the community identified by the community API key provided for authorisation.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The updates to apply to the target domain.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDomainRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Domain updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Domain management"
        ],
        "summary": "Get the domain linked to the community identified by the community API key provided for authorisation.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Domain retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Domain"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/domain/{domain}": {
      "post": {
        "tags": [
          "Domain management"
        ],
        "summary": "Update a domain.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target domain."
          }
        ],
        "requestBody": {
          "description": "The updates to apply to the target domain.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDomainRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Domain updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Domain management"
        ],
        "summary": "Delete a domain.",
        "security": [
          {
            "MasterApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target domain."
          }
        ],
        "responses": {
          "200": {
            "description": "Domain deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Domain management"
        ],
        "summary": "Get a domain.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the domain."
          }
        ],
        "responses": {
          "200": {
            "description": "Domain retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Domain"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/domains": {
      "get": {
        "tags": [
          "Domain management"
        ],
        "summary": "Search for domains.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "name",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "An optional value to filter domains with based on their short and long names. The value is checked in a case-insensitive manner and using wildcard matching."
          }
        ],
        "responses": {
          "200": {
            "description": "Domains retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Domain"
                  }
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/group": {
      "put": {
        "tags": [
          "Domain management"
        ],
        "summary": "Create a specification group.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new specification group.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSpecificationGroupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Specification group created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/group/{group}": {
      "post": {
        "tags": [
          "Domain management"
        ],
        "summary": "Update a specification group.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "group",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target specification group."
          }
        ],
        "requestBody": {
          "description": "The updates to apply to the target specification group.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSpecificationGroupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Specification group updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Domain management"
        ],
        "summary": "Delete a specification group.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "group",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target specification group."
          }
        ],
        "responses": {
          "200": {
            "description": "Specification group deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Domain management"
        ],
        "summary": "Get a specification group.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "group",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the specification group."
          }
        ],
        "responses": {
          "200": {
            "description": "Specification group retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SpecificationGroup"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/domain/{domain}/groups": {
      "get": {
        "tags": [
          "Domain management"
        ],
        "summary": "Search for specification groups under a given domain.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the domain within which to search."
          },
          {
            "in": "query",
            "name": "name",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "An optional value to filter specification groups with based on their short and long names. The value is checked in a case-insensitive manner and using wildcard matching."
          }
        ],
        "responses": {
          "200": {
            "description": "Specification groups retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SpecificationGroup"
                  }
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/specification": {
      "put": {
        "tags": [
          "Domain management"
        ],
        "summary": "Create a specification.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new specification.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSpecificationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Specification created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/specification/{specification}": {
      "post": {
        "tags": [
          "Domain management"
        ],
        "summary": "Update a specification.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "specification",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target specification."
          }
        ],
        "requestBody": {
          "description": "The updates to apply to the target specification.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSpecificationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Specification updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Domain management"
        ],
        "summary": "Delete a specification.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "specification",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target specification."
          }
        ],
        "responses": {
          "200": {
            "description": "Specification deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Domain management"
        ],
        "summary": "Get a specification.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "specification",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the specification."
          }
        ],
        "responses": {
          "200": {
            "description": "Specification retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Specification"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/domain/{domain}/specifications": {
      "get": {
        "tags": [
          "Domain management"
        ],
        "summary": "Search for specifications under a given domain that are not defined within a group.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the domain within which to search."
          },
          {
            "in": "query",
            "name": "name",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "An optional value to filter specifications with based on their short and long names. The value is checked in a case-insensitive manner and using wildcard matching."
          }
        ],
        "responses": {
          "200": {
            "description": "Specifications retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Specification"
                  }
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/group/{group}/specifications": {
      "get": {
        "tags": [
          "Domain management"
        ],
        "summary": "Search for specifications under a given specification group.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "group",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the specification group within which to search."
          },
          {
            "in": "query",
            "name": "name",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "An optional value to filter specifications with based on their short and long names. The value is checked in a case-insensitive manner and using wildcard matching."
          }
        ],
        "responses": {
          "200": {
            "description": "Specifications retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Specification"
                  }
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/actor": {
      "put": {
        "tags": [
          "Domain management"
        ],
        "summary": "Create an actor.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new actor.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateActorRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Actor created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/actor/{actor}": {
      "post": {
        "tags": [
          "Domain management"
        ],
        "summary": "Update an actor.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target actor."
          }
        ],
        "requestBody": {
          "description": "The updates to apply to the target actor.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateActorRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Actor updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Domain management"
        ],
        "summary": "Delete an actor.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target specification."
          }
        ],
        "responses": {
          "200": {
            "description": "Actor deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Domain management"
        ],
        "summary": "Get an actor.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the actor."
          }
        ],
        "responses": {
          "200": {
            "description": "Actor retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Actor"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/specification/{specification}/actors": {
      "get": {
        "tags": [
          "Domain management"
        ],
        "summary": "Search for actors under a given specification.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "specification",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the specification within which to search."
          },
          {
            "in": "query",
            "name": "name",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "An optional value to filter actors with based on their identifiers and names. The value is checked in a case-insensitive manner and using wildcard matching."
          }
        ],
        "responses": {
          "200": {
            "description": "Actors retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Actor"
                  }
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/community": {
      "put": {
        "tags": [
          "Community management"
        ],
        "summary": "Create a community.",
        "security": [
          {
            "MasterApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new community.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCommunityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Community created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Community management"
        ],
        "summary": "Update the community identified by the provided authorisation API key.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The updates to apply to the target community.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCommunityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Community updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/community/{community}": {
      "post": {
        "tags": [
          "Community management"
        ],
        "summary": "Update a community.",
        "security": [
          {
            "MasterApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "community",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target community."
          }
        ],
        "requestBody": {
          "description": "The updates to apply to the target community.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCommunityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Community updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Community management"
        ],
        "summary": "Delete a community.",
        "security": [
          {
            "MasterApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "community",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target community."
          }
        ],
        "responses": {
          "200": {
            "description": "Community deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/organisation": {
      "get": {
        "tags": [
          "Community management"
        ],
        "summary": "Get the organisations of a given community.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "The community's organisations.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Organisation"
                  }
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Community management"
        ],
        "summary": "Create an organisation.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new organisation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrganisationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Organisation created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/organisation/{organisation}": {
      "get": {
        "tags": [
          "Community management"
        ],
        "summary": "Get a given organisation's data.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organisation",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the organisation."
          }
        ],
        "responses": {
          "200": {
            "description": "The organisation's data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Organisation"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Community management"
        ],
        "summary": "Update an organisation.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organisation",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target organisation."
          }
        ],
        "requestBody": {
          "description": "The updates to apply to the target organisation.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOrganisationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Organisation updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Community management"
        ],
        "summary": "Delete an organisation.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organisation",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target organisation."
          }
        ],
        "responses": {
          "200": {
            "description": "Organisation deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/organisation/{organisation}/systems": {
      "get": {
        "tags": [
          "Community management"
        ],
        "summary": "Get the systems of a given organisation.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organisation",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the organisation."
          }
        ],
        "responses": {
          "200": {
            "description": "The organisation's systems.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/System"
                  }
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/system": {
      "put": {
        "tags": [
          "Community management"
        ],
        "summary": "Create a system.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new system.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSystemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "System created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/system/{system}": {
      "get": {
        "tags": [
          "Community management"
        ],
        "summary": "Get a given system's data.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "system",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the system."
          }
        ],
        "responses": {
          "200": {
            "description": "The system's data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/System"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Community management"
        ],
        "summary": "Update a system.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "system",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target system."
          }
        ],
        "requestBody": {
          "description": "The updates to apply to the target system.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSystemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "System updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Community management"
        ],
        "summary": "Delete a system.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "system",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target system."
          }
        ],
        "responses": {
          "200": {
            "description": "System deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure": {
      "post": {
        "tags": [
          "Configuration"
        ],
        "summary": "Update configuration entries for domains, organisations, systems and conformance statements.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "Information on the configuration updates to carry out.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfigureRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Configuration updates applied (with possible warnings).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigureResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/domain": {
      "put": {
        "tags": [
          "Configuration"
        ],
        "summary": "Create a domain parameter.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new domain parameter.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainParameterCreationInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Domain parameter created."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Configuration"
        ],
        "summary": "Update a domain parameter.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The domain parameter's identification and updates.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainParameterUpdateInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Domain parameter updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/domain/{parameter}": {
      "delete": {
        "tags": [
          "Configuration"
        ],
        "summary": "Delete a domain parameter.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "parameter",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Parameter deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/domain/{domain}/{parameter}": {
      "delete": {
        "tags": [
          "Configuration"
        ],
        "summary": "Delete a domain parameter for the given domain. This operation needs to be used when authenticating with a community API key referring to a community without a specific linked domain.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the target domain."
          },
          {
            "in": "path",
            "name": "parameter",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target parameter."
          }
        ],
        "responses": {
          "200": {
            "description": "Parameter deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/service": {
      "get": {
        "tags": [
          "Configuration"
        ],
        "summary": "Search for test services.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "domain",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "The domain API key value to identify the domain within which to search for test services. If not provided, the domain used is the one linked to the community identified by the community API key provided for authentication."
          },
          {
            "in": "query",
            "name": "key",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "The service's key."
          },
          {
            "in": "query",
            "name": "identifier",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "The service's reference identifier. The value is checked in a case-insensitive manner and using wildcard matching."
          },
          {
            "in": "query",
            "name": "version",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "The service's version. The value is checked in a case-insensitive manner and using wildcard matching."
          },
          {
            "in": "query",
            "name": "serviceType",
            "schema": {
              "type": "string",
              "enum": ["messaging", "validation", "processing"]
            },
            "required": false,
            "description": "The service's type."
          },
          {
            "in": "query",
            "name": "apiType",
            "schema": {
              "type": "string",
              "enum": ["soap", "rest"]
            },
            "required": false,
            "description": "The service's API type."
          }
        ],
        "responses": {
          "200": {
            "description": "Test services retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TestService"
                  }
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Configuration"
        ],
        "summary": "Create a test service.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new test service.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestServiceCreationInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Test service created."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Configuration"
        ],
        "summary": "Update a test service.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The test service's identification and updates.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestServiceUpdateInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Test service updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/service/{service}": {
      "delete": {
        "tags": [
          "Configuration"
        ],
        "summary": "Delete a test service. The domain of the service is assumed to be the one linked to the community identified by the community API key used for authentication.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "service",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the test service."
          }
        ],
        "responses": {
          "200": {
            "description": "Test service deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/service/{domain}/{service}": {
      "delete": {
        "tags": [
          "Configuration"
        ],
        "summary": "Delete a test service for a given domain.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The domain API key for the service's domain."
          },
          {
            "in": "path",
            "name": "service",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the test service."
          }
        ],
        "responses": {
          "200": {
            "description": "Test service deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/organisation": {
      "put": {
        "tags": [
          "Configuration"
        ],
        "summary": "Create an organisation property definition.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new property.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrganisationPropertyInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Property created."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Configuration"
        ],
        "summary": "Update an organisation property definition.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The property's identification and updates.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrganisationPropertyInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Property updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/organisation/{property}": {
      "delete": {
        "tags": [
          "Configuration"
        ],
        "summary": "Delete an organisation property definition.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "property",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target property."
          }
        ],
        "responses": {
          "200": {
            "description": "Property deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/system": {
      "put": {
        "tags": [
          "Configuration"
        ],
        "summary": "Create a system property definition.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new property.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemPropertyInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Property created."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Configuration"
        ],
        "summary": "Update a system property definition.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The property's identification and updates.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemPropertyInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Property updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/system/{property}": {
      "delete": {
        "tags": [
          "Configuration"
        ],
        "summary": "Delete a system property definition.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "property",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target property."
          }
        ],
        "responses": {
          "200": {
            "description": "Property deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/actor/{actor}": {
      "put": {
        "tags": [
          "Configuration"
        ],
        "summary": "Create a conformance statement (actor) property definition.",
        "parameters": [
          {
            "in": "path",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target specification actor."
          }
        ],
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The data for the new property.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StatementPropertyInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Property created."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Configuration"
        ],
        "summary": "Update a conformance statement (actor) property definition.",
        "parameters": [
          {
            "in": "path",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target specification actor."
          }
        ],
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The property's identification and updates.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StatementPropertyInfo"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Property updated."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/configure/actor/{actor}/{property}": {
      "delete": {
        "tags": [
          "Configuration"
        ],
        "summary": "Delete a conformance statement (actor) property definition.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target specification actor."
          },
          {
            "in": "path",
            "name": "property",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The key identifying the target property."
          }
        ],
        "responses": {
          "200": {
            "description": "Property deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/conformance": {
      "get": {
        "tags": [
          "Conformance statements"
        ],
        "summary": "Retrieve the conformance statements (system and actor API key combinations) for the organisation identified by the organisation API key provided for authorisation.",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "The list of conformance statements.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConformanceStatementKeys"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/conformance/{system}": {
      "get": {
        "tags": [
          "Conformance statements"
        ],
        "summary": "Retrieve the conformance statements (system and actor API key combinations) for a given system.",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "system",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the conformance statement's system."
          }
        ],
        "responses": {
          "200": {
            "description": "The list of conformance statements.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConformanceStatementKeys"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/conformance/snapshot/{snapshot}": {
      "get": {
        "tags": [
          "Conformance statements"
        ],
        "summary": "Retrieve the conformance statements (system and actor API key combinations) for the organisation identified by the organisation API key provided for authorisation, in a given conformance snapshot.",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "snapshot",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the relevant conformance snapshot."
          }
        ],
        "responses": {
          "200": {
            "description": "The list of conformance statements.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConformanceStatementKeys"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/conformance/snapshot/{snapshot}/{system}": {
      "get": {
        "tags": [
          "Conformance statements"
        ],
        "summary": "Retrieve the conformance statements (system and actor API key combinations) for a given system and conformance snapshot.",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "snapshot",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the relevant conformance snapshot."
          },
          {
            "in": "path",
            "name": "system",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the conformance statement's system in the specific snapshot."
          }
        ],
        "responses": {
          "200": {
            "description": "The list of conformance statements.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConformanceStatementKeys"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/conformance/{system}/{actor}": {
      "put": {
        "tags": [
          "Conformance statements"
        ],
        "summary": "Create a conformance statement between a system and a specification actor.",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "system",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the system for which to create the conformance statement."
          },
          {
            "in": "path",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the target specification actor."
          }
        ],
        "responses": {
          "200": {
            "description": "Conformance statement successfully created."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Conformance statements"
        ],
        "summary": "Delete a conformance statement between a system and a specification actor.",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "system",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the conformance statement's system."
          },
          {
            "in": "path",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the conformance statement's specification actor."
          }
        ],
        "responses": {
          "200": {
            "description": "Conformance statement successfully deleted."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Conformance statements"
        ],
        "summary": "Get a conformance statement report for a system and actor pair considering the latest conformance testing status. The report can be produced in either XML or PDF depending on the provided 'Accept' header (XML being the default).",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "system",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the system for which to create the conformance statement."
          },
          {
            "in": "path",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the target specification actor."
          }
        ],
        "responses": {
          "200": {
            "description": "Conformance statement report successfully returned.",
            "content": {
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ConformanceStatementReport"
                }
              },
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/conformance/{system}/{actor}/{snapshot}": {
      "get": {
        "tags": [
          "Conformance statements"
        ],
        "summary": "Get a conformance statement report for a system and actor pair considering a given conformance snapshot. The report can be produced in either XML or PDF depending on the provided 'Accept' header (XML being the default).",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "system",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the system for which to create the conformance statement."
          },
          {
            "in": "path",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the target specification actor."
          },
          {
            "in": "path",
            "name": "snapshot",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The API key identifying the conformance snapshot."
          }
        ],
        "responses": {
          "200": {
            "description": "Conformance statement report successfully returned.",
            "content": {
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ConformanceStatementReport"
                }
              },
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/tests/start": {
      "post": {
        "tags": [
          "Test sessions"
        ],
        "summary": "Launch one or more test sessions.",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "Information on the test session(s) to start.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionStartRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Test session(s) successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionStartResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/tests/status": {
      "post": {
        "tags": [
          "Test sessions"
        ],
        "summary": "Query the status, logs and results of one or more test sessions.",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "Query parameters and information options for the test sessions to lookup.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionStatusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Test sessions' status successfully returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionStatusResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/tests/stop": {
      "post": {
        "tags": [
          "Test sessions"
        ],
        "summary": "Stop one or more test sessions.",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The test sessions to stop.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionStopRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Test session(s) successfully stopped.",
            "content": {}
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/tests/report/{sessionId}": {
      "get": {
        "tags": [
          "Test sessions"
        ],
        "summary": "Retrieve a test session report. The report can be produced in either XML or PDF depending on the provided 'Accept' header (XML being the default).",
        "security": [
          {
            "OrganisationApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "description": "The identifier of the test session of which the report is requested.",
            "in": "path",
            "name": "sessionId",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Report successfully created.",
            "content": {
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/TestCaseOverviewReport"
                }
              },
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "404": {
            "description": "No test session was not found matching the provided identifier."
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/testsuite/deploy": {
      "post": {
        "tags": [
          "Test suites"
        ],
        "summary": "Deploy a (non-shared) test suite to a specification.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The test suite archive to deploy and the deployment's parameters.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestSuiteDeployViaBase64Request"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/TestSuiteDeployViaFileRequest"
              },
              "encoding": {
                "testSuite": {
                  "contentType": "application/zip"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Test suite deployed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestSuiteDeployResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/testsuite/deployShared": {
      "post": {
        "tags": [
          "Test suites"
        ],
        "summary": "Deploy a shared test suite to a community's domain.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "The shared test suite archive to deploy and the deployment's parameters.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SharedTestSuiteDeployViaBase64Request"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/SharedTestSuiteDeployViaFileRequest"
              },
              "encoding": {
                "testSuite": {
                  "contentType": "application/zip"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Test suite deployed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestSuiteDeployResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/testsuite/undeploy": {
      "post": {
        "tags": [
          "Test suites"
        ],
        "summary": "Undeploy an existing (non-shared) test suite from a specification.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "Information on the test suite to be undeployed.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestSuiteUndeployRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Test suite successfully undeployed.",
            "content": {}
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/testsuite/undeployShared": {
      "post": {
        "tags": [
          "Test suites"
        ],
        "summary": "Undeploy an existing shared test suite from a community's domain.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "Information on the shared test suite to be undeployed.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SharedTestSuiteUndeployRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Test suite successfully undeployed.",
            "content": {}
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/testsuite/linkShared": {
      "post": {
        "tags": [
          "Test suites"
        ],
        "summary": "Link a shared test suite to one or more specifications.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "Information on the shared test suite and specification(s) to be linked.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestSuiteLinkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Test suite successfully linked.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TestSuiteLinkResponse"
                }
              }
            }
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    },
    "/testsuite/unlinkShared": {
      "post": {
        "tags": [
          "Test suites"
        ],
        "summary": "Unlink a shared test suite from one or more specifications.",
        "security": [
          {
            "CommunityApiKeyAuth": []
          }
        ],
        "requestBody": {
          "description": "Information on the shared test suite and specification(s) to be linked.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestSuiteUnlinkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Test suite successfully unlinked.",
            "content": {}
          },
          "default": {
            "description": "The received request was invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorInformation"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "SessionStartRequest": {
        "description": "Information on the test session(s) to start.",
        "type": "object",
        "properties": {
          "system": {
            "description": "The API KEY identifying the target system. This can be skipped in case the target organisation defines a single system.",
            "type": "string"
          },
          "actor": {
            "description": "The API KEY identifying the target actor. This can be skipped in case you prefer providing test suite and/or test case identifiers to match the target actor. In any case a single conformance statement must be matched based on the provided inputs.",
            "type": "string"
          },
          "forceSequentialExecution": {
            "description": "Whether the test sessions should be forced to execute sequentially.",
            "type": "boolean",
            "default": false
          },
          "waitForCompletion": {
            "description": "Whether the call should only return once the started test sessions have completed (or until a maximum wait time has elapsed).",
            "type": "boolean",
            "default": false
          },
          "maximumWaitTime": {
            "description": "In case the call should wait for the test sessions to complete, this is the maximum time (in milliseconds) to wait before returning.",
            "type": "number"
          },
          "testSuite": {
            "description": "The identifier(s) of the test suites to execute.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "testCase": {
            "description": "The identifier(s) of the test cases to execute.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "inputMapping": {
            "description": "Inputs to provide to test sessions. These can be applied to all test sessions, or certain test sessions identified by their relevant test case or test suite identifiers.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InputMapping"
            }
          }
        },
        "additionalProperties": false
      },
      "InputMapping": {
        "description": "Data relevant to an input provided to create one or more test sessions.",
        "type": "object",
        "properties": {
          "testSuite": {
            "description": "The identifiers of the test suite for which this input is to be provided.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "testCase": {
            "description": "The identifiers of the test case for which this input is to be provided.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "input": {
            "$ref": "#/components/schemas/AnyContent"
          }
        },
        "required": [
          "input"
        ],
        "additionalProperties": false
      },
      "AnyContent": {
        "description": "The data and metadata relevant to a given test session input.",
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the input through which it is referenced in test cases.",
            "type": "string"
          },
          "embeddingMethod": {
            "description": "The way in which the value of the input is to be interpreted (as the actual string value, as a Base64-encoded string or as a remote URI location).",
            "type": "string",
            "enum": [
              "STRING",
              "BASE64",
              "URI"
            ],
            "default": "STRING"
          },
          "value": {
            "description": "The value of the input provided as a string, to be interpreted based on the embeddingMethod input. This may be missing in case of a complex type (list or map).",
            "type": "string"
          },
          "type": {
            "description": "The data type of this input.",
            "type": "string",
            "enum": [
              "string",
              "number",
              "boolean",
              "binary",
              "object",
              "schema",
              "map",
              "list"
            ],
            "default": "string"
          },
          "encoding": {
            "type": "string"
          },
          "item": {
            "description": "In case this is a complex data type (list or map) this is the array of child (contained) types.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnyContent"
            }
          }
        },
        "additionalProperties": false
      },
      "SessionStartResponse": {
        "description": "Information on the created test sessions.",
        "type": "object",
        "properties": {
          "createdSessions": {
            "description": "Information on the created test session(s).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SessionCreationInformation"
            }
          }
        },
        "required": [
          "createdSessions"
        ],
        "additionalProperties": false
      },
      "SessionStatusRequest": {
        "type": "object",
        "description": "Query parameters and information options for the test sessions to lookup.",
        "properties": {
          "session": {
            "description": "The session identifier(s) to look up.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "withLogs": {
            "description": "Whether or not the log output for each session should be returned.",
            "type": "boolean",
            "default": false
          },
          "withReports": {
            "description": "Whether or not the XML test case report should be returned.",
            "type": "boolean",
            "default": false
          }
        },
        "additionalProperties": false,
        "required": [
          "session"
        ]
      },
      "SessionStatusResponse": {
        "description": "Response for the test session status operation.",
        "type": "object",
        "properties": {
          "sessions": {
            "description": "The list of status information for retrieved test sessions.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SessionStatus"
            }
          }
        },
        "required": [
          "sessions"
        ],
        "additionalProperties": false
      },
      "SessionStopRequest": {
        "description": "Request to stop one or more test sessions.",
        "type": "object",
        "properties": {
          "session": {
            "description": "The identifier(s) of the test session(s) to stop.",
            "type": "array",
            "items": {
              "description": "Test session identifier.",
              "type": "string"
            }
          }
        },
        "required": [
          "session"
        ],
        "additionalProperties": false
      },
      "SessionCreationInformation": {
        "description": "The metadata for a created test session.",
        "type": "object",
        "properties": {
          "testSuite": {
            "description": "The identifier of the test session's relevant test suite.",
            "type": "string"
          },
          "testCase": {
            "description": "The identifier of the test session's relevant test case.",
            "type": "string"
          },
          "session": {
            "description": "The identifier assigned to the test session.",
            "type": "string"
          },
          "completed": {
            "description": "If the call waited until test sessions were completed, this flag specifies whether the given test session is known to be completed. This may be false if the session did not complete within the maximum wait time, or altogether missing if the call was not set to wait for test session completion.",
            "type": "boolean"
          }
        },
        "required": [
          "testSuite",
          "testCase",
          "session"
        ],
        "additionalProperties": false
      },
      "TestSuiteDeployViaFileRequest": {
        "description": "Information on the test suite to deploy when the call is made as a multipart form submission.",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseTestSuiteDeployRequest"
          },
          {
            "type": "object",
            "properties": {
              "testSuite": {
                "description": "The test suite archive to deploy.",
                "type": "string",
                "format": "binary"
              },
              "testCaseWithSpecificationUpdate": {
                "description": "Test case identifiers for which their definition will be updated.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "testCaseWithoutSpecificationUpdate": {
                "description": "Test case identifiers for which their definition will be not updated.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "testCaseWithTestHistoryReplacement": {
                "description": "Test case identifiers for which their testing history will be reset.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "testCaseWithoutTestHistoryReplacement": {
                "description": "Test case identifiers for which their testing history will be not reset.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "testSuite"
            ]
          }
        ]
      },
      "SharedTestSuiteDeployViaFileRequest": {
        "description": "Information on the shared test suite to deploy when the call is made as a multipart form submission.",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseSharedTestSuiteDeployRequest"
          },
          {
            "type": "object",
            "properties": {
              "testSuite": {
                "description": "The shared test suite archive to deploy.",
                "type": "string",
                "format": "binary"
              },
              "testCaseWithSpecificationUpdate": {
                "description": "Test case identifiers for which their definition will be updated.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "testCaseWithoutSpecificationUpdate": {
                "description": "Test case identifiers for which their definition will be not updated.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "testCaseWithTestHistoryReplacement": {
                "description": "Test case identifiers for which their testing history will be reset.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "testCaseWithoutTestHistoryReplacement": {
                "description": "Test case identifiers for which their testing history will be not reset.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "testSuite"
            ]
          }
        ]
      },
      "TestSuiteDeployViaBase64Request": {
        "description": "Information on the test suite to deploy when the call is made as JSON.",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseTestSuiteDeployRequest"
          },
          {
            "type": "object",
            "properties": {
              "testSuite": {
                "description": "The test suite archive to deploy provided as a Base64-encoded string.",
                "type": "string",
                "format": "base64"
              },
              "testCases": {
                "description": "Update choices for specific test cases.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TestCaseDeploymentAction"
                }
              }
            },
            "required": [
              "testSuite"
            ]
          }
        ]
      },
      "SharedTestSuiteDeployViaBase64Request": {
        "description": "Information on the shared test suite to deploy when the call is made as JSON.",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseSharedTestSuiteDeployRequest"
          },
          {
            "type": "object",
            "properties": {
              "testSuite": {
                "description": "The shared test suite archive to deploy provided as a Base64-encoded string.",
                "type": "string",
                "format": "base64"
              },
              "testCases": {
                "description": "Update choices for specific test cases.",
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TestCaseDeploymentAction"
                }
              }
            },
            "required": [
              "testSuite"
            ]
          }
        ]
      },
      "BaseTestSuiteDeployRequest": {
        "description": "Common information on the test suite to deploy.",
        "type": "object",
        "properties": {
          "specification": {
            "description": "The API KEY identifying the target specification.",
            "type": "string"
          },
          "ignoreWarnings": {
            "description": "Whether test suite validation warnings should be ignored.",
            "type": "boolean",
            "default": false
          },
          "replaceTestHistory": {
            "description": "Whether the test history linked to the test suite's test cases should be reset. This is the default setting to consider if no test case specific options are defined.",
            "type": "boolean",
            "default": false
          },
          "updateSpecification": {
            "description": "Whether the specification's metadata should be updated using the provided test suite's content. For test cases' metadata this setting will be considered as the default, if no test case specific options are defined.",
            "type": "boolean",
            "default": false
          },
          "showIdentifiers": {
            "description": "Whether to return the test suite's contained and related identifiers upon successful deployment. These identifiers would be referenced when executing the test suite's tests through the REST API.",
            "type": "boolean",
            "default": true
          }
        },
        "required": [
          "specification"
        ],
        "additionalProperties": false
      },
      "BaseSharedTestSuiteDeployRequest": {
        "description": "Common information on the shared test suite to deploy.",
        "type": "object",
        "properties": {
          "ignoreWarnings": {
            "description": "Whether test suite validation warnings should be ignored.",
            "type": "boolean",
            "default": false
          },
          "replaceTestHistory": {
            "description": "Whether the test history linked to the test suite's test cases should be reset. This is the default setting to consider if no test case specific options are defined.",
            "type": "boolean",
            "default": false
          },
          "updateSpecification": {
            "description": "Whether the test suite's metadata should be updated using the provided test suite's content.",
            "type": "boolean",
            "default": false
          },
          "showIdentifiers": {
            "description": "Whether to return the test suite's contained and related identifiers upon successful deployment. These identifiers would be referenced when executing the test suite's tests through the REST API.",
            "type": "boolean",
            "default": true
          }
        },
        "additionalProperties": false
      },
      "TestSuiteDeployResponse": {
        "description": "Response for the (shared or specification-specific) test suite deploy operation.",
        "type": "object",
        "properties": {
          "completed": {
            "description": "Whether or not the deployment was completed.",
            "type": "boolean"
          },
          "errors": {
            "description": "The list of errors resulting from the test suite's validation.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TestSuiteValidationReportItem"
            }
          },
          "warnings": {
            "description": "The list of warnings resulting from the test suite's validation.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TestSuiteValidationReportItem"
            }
          },
          "messages": {
            "description": "The list of information messages resulting from the test suite's validation.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TestSuiteValidationReportItem"
            }
          },
          "identifiers": {
            "description": "The API key identifiers linked to the test suite.",
            "type": "object",
            "required": [
              "testSuite"
            ],
            "properties": {
              "testSuite": {
                "description": "The test suite identifier.",
                "type": "string"
              },
              "testCases": {
                "description": "The identifiers of the test suite's test cases.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "specifications": {
                "description": "The identifiers linked to the test suite's linked specification(s).",
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "name",
                    "identifier"
                  ],
                  "properties": {
                    "name": {
                      "description": "The specification's name.",
                      "type": "string"
                    },
                    "identifier": {
                      "description": "The specification's API key.",
                      "type": "string"
                    },
                    "actors": {
                      "description": "The information for the actors linked to the specification.",
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TestSuiteUploadActorKeys"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "required": [
          "completed"
        ],
        "additionalProperties": false
      },
      "TestSuiteUploadActorKeys": {
        "description": "The API keys for the actors related to the test suite.",
        "type": "object",
        "required": [
          "name",
          "identifier"
        ],
        "properties": {
          "name": {
            "description": "The name of the actor.",
            "type": "string"
          },
          "identifier": {
            "description": "The API key of the actor.",
            "type": "string"
          }
        }
      },
      "TestCaseDeploymentAction": {
        "description": "Deployment choices for a given test case.",
        "type": "object",
        "properties": {
          "identifier": {
            "description": "The test case identifier.",
            "type": "string"
          },
          "updateSpecification": {
            "description": "Whether the metadata for this test case should be updated.",
            "type": "boolean",
            "default": false
          },
          "replaceTestHistory": {
            "description": "Whether the testing history for this test case should be reset.",
            "type": "boolean",
            "default": false
          }
        }
      },
      "TestSuiteValidationReportItem": {
        "description": "A test suite validation report finding.",
        "type": "object",
        "properties": {
          "description": {
            "description": "The finding's description.",
            "type": "string"
          },
          "location": {
            "description": "The path of the resource within the test suite that resulted in this finding.",
            "type": "string"
          }
        },
        "required": [
          "description"
        ],
        "additionalProperties": false
      },
      "TestSuiteUndeployRequest": {
        "description": "Request to undeploy a given test suite.",
        "type": "object",
        "properties": {
          "specification": {
            "description": "The API key value to uniquely identify the specification from which the test suite will be undeployed from.",
            "type": "string"
          },
          "testSuite": {
            "description": "The identifier of the test suite that will be undeployed.",
            "type": "string"
          }
        },
        "required": [
          "specification",
          "testSuite"
        ],
        "additionalProperties": false
      },
      "SharedTestSuiteUndeployRequest": {
        "description": "Request to undeploy a given shared test suite.",
        "type": "object",
        "properties": {
          "testSuite": {
            "description": "The identifier of the test suite that will be undeployed.",
            "type": "string"
          }
        },
        "required": [
          "testSuite"
        ],
        "additionalProperties": false
      },
      "TestSuiteLinkRequest": {
        "description": "Request to link a shared test suite with one or more specifications.",
        "type": "object",
        "properties": {
          "testSuite": {
            "description": "The identifier of the shared test suite.",
            "type": "string"
          },
          "specifications": {
            "description": "The list of specifications to link the test suite to.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TestSuiteLinkRequestSpecification"
            }
          }
        },
        "required": [
          "testSuite",
          "specifications"
        ],
        "additionalProperties": false
      },
      "TestSuiteLinkRequestSpecification": {
        "description": "Information on how to link a shared test suite to a given specification.",
        "type": "object",
        "properties": {
          "specification": {
            "description": "The API key identifying the specification to link the test suite to.",
            "type": "string"
          },
          "update": {
            "description": "Whether or not to update the specification's actor metadata based on the test suite.",
            "type": "boolean"
          }
        },
        "required": [
          "specification"
        ],
        "additionalProperties": false
      },
      "TestSuiteLinkResponse": {
        "description": "Response for the linking of a shared test suite with one or more specifications.",
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/TestSuiteLinkResponseSpecification"
        }
      },
      "TestSuiteLinkResponseSpecification": {
        "description": "The result from linking a shared test suite to a given specification.",
        "type": "object",
        "properties": {
          "specification": {
            "description": "The API key identifying the specification.",
            "type": "string"
          },
          "linked": {
            "description": "Whether or not the test suite was linked to the specification.",
            "type": "boolean"
          },
          "message": {
            "description": "A message detailing why the specification was not linked (if linking didn't take place).",
            "type": "string"
          },
          "actors": {
            "description": "The information for the actors linked to the specification.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TestSuiteUploadActorKeys"
            }
          }
        },
        "required": [
          "specification",
          "linked"
        ],
        "additionalProperties": false
      },
      "TestSuiteUnlinkRequest": {
        "description": "Request to unlink a shared test suite from a given specification.",
        "type": "object",
        "properties": {
          "testSuite": {
            "description": "The identifier of the shared test suite.",
            "type": "string"
          },
          "specifications": {
            "description": "The list of specifications to unlink from the test suite (identified via their API keys).",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "testSuite",
          "specifications"
        ],
        "additionalProperties": false
      },
      "ErrorInformation": {
        "description": "Information on an encountered error.",
        "type": "object",
        "properties": {
          "error_code": {
            "description": "The code used to identify the type of error encountered.",
            "type": "string"
          },
          "error_description": {
            "description": "The description of the error.",
            "type": "string"
          },
          "error_id": {
            "description": "An optional error identifier to refer to the specific error in logs.",
            "type": "string"
          }
        },
        "required": [
          "error_code",
          "error_description"
        ],
        "additionalProperties": false
      },
      "SessionStatus": {
        "description": "Status information for a test session.",
        "type": "object",
        "properties": {
          "session": {
            "description": "The session's unique identifier.",
            "type": "string"
          },
          "result": {
            "description": "The session's result.",
            "type": "string",
            "enum": [
              "SUCCESS",
              "FAILURE",
              "UNDEFINED"
            ]
          },
          "startTime": {
            "description": "The session start time.",
            "type": "string",
            "format": "yyyy-MM-ddTHH:mm:ssZ"
          },
          "endTime": {
            "description": "The session end time (if the session is completed).",
            "type": "string",
            "format": "yyyy-MM-ddTHH:mm:ssZ"
          },
          "message": {
            "description": "The resulting output message of the session.",
            "type": "string"
          },
          "logs": {
            "description": "The list of log entries produced by the session.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "report": {
            "description": "The test session's XML report.",
            "type": "string"
          }
        },
        "required": [
          "session",
          "result",
          "startTime"
        ],
        "additionalProperties": false
      },
      "ConformanceStatementReport": {
        "description": "XML conformance statement report.",
        "type": "object",
        "required": [
          "metadata",
          "statement"
        ],
        "properties": {
          "metadata": {
            "description": "The report's metadata.",
            "type": "object",
            "required": [
              "reportTime"
            ],
            "properties": {
              "reportTime": {
                "description": "The date of the report.",
                "type": "string"
              }
            }
          },
          "statement": {
            "description": "The content of the report.",
            "type": "object",
            "required": [
              "definition",
              "summary",
              "testOverview"
            ],
            "properties": {
              "definition": {
                "description": "The context defining what the report concerns.",
                "type": "object",
                "required": [
                  "party",
                  "domain",
                  "specification",
                  "actor"
                ],
                "properties": {
                  "party": {
                    "description": "The party linked to the conformance statement.",
                    "type": "object",
                    "properties": {
                      "organisation": {
                        "$ref": "#/components/schemas/PartyDefinition"
                      },
                      "system": {
                        "$ref": "#/components/schemas/PartyDefinition"
                      }
                    }
                  },
                  "domain": {
                    "$ref": "#/components/schemas/ConformanceItemInformation"
                  },
                  "specificationGroup": {
                    "$ref": "#/components/schemas/ConformanceItemInformation"
                  },
                  "specification": {
                    "$ref": "#/components/schemas/ConformanceItemInformation"
                  },
                  "actor": {
                    "$ref": "#/components/schemas/ConformanceItemInformation"
                  }
                }
              },
              "summary": {
                "description": "The test result summary for the report.",
                "type": "object",
                "required": [
                  "status",
                  "succeeded",
                  "failed",
                  "incomplete"
                ],
                "properties": {
                  "status": {
                    "description": "The overall result status.",
                    "type": "string",
                    "enum": [
                      "SUCCESS",
                      "FAILURE",
                      "UNDEFINED"
                    ]
                  },
                  "succeeded": {
                    "description": "The number of succeeded tests or statements.",
                    "type": "number"
                  },
                  "failed": {
                    "description": "The number of failed tests or statements.",
                    "type": "number"
                  },
                  "incomplete": {
                    "description": "The number of incomplete tests or statements.",
                    "type": "number"
                  }
                }
              },
              "lastUpdate": {
                "description": "The last time the conformance statement's status was updated.",
                "type": "string"
              },
              "testOverview": {
                "description": "The overview of test results.",
                "type": "object",
                "properties": {
                  "testSuite": {
                    "description": "Result for a specific test suite.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "metadata": {
                          "$ref": "#/components/schemas/TestDefinitionMetadata"
                        },
                        "result": {
                          "description": "The test suite's overall result status.",
                          "type": "string",
                          "enum": [
                            "SUCCESS",
                            "FAILURE",
                            "UNDEFINED"
                          ]
                        },
                        "testCases": {
                          "description": "The list of test cases included in the test suite.",
                          "type": "object",
                          "properties": {
                            "testCase": {
                              "description": "A test case.",
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/TestCaseOverview"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "testDetails": {
                "description": "The list of latest relevant test case results.",
                "type": "object",
                "properties": {
                  "testCase": {
                    "description": "A test case result.",
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/TestCaseOverviewReport"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "TestCaseOverview": {
        "description": "Overview information for a specific test case.",
        "type": "object",
        "required": [
          "result"
        ],
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/TestDefinitionMetadata"
          },
          "result": {
            "description": "The test suite's overall result status.",
            "type": "string",
            "enum": [
              "SUCCESS",
              "FAILURE",
              "UNDEFINED"
            ]
          },
          "lastUpdate": {
            "description": "The last time the test case was executed.",
            "type": "string"
          },
          "optional": {
            "description": "Whether the test case is flagged as optional.",
            "type": "boolean",
            "default": false,
            "xml": {
              "attribute": true
            }
          },
          "disabled": {
            "description": "Whether the test case is flagged as disabled.",
            "type": "boolean",
            "default": false,
            "xml": {
              "attribute": true
            }
          },
          "ref": {
            "description": "Reference to a specific test session report.",
            "type": "string",
            "xml": {
              "attribute": true
            }
          }
        }
      },
      "ConformanceItemInformation": {
        "description": "Information on an element in the conformance hierarchy.",
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "description": "The name of the element.",
            "type": "string"
          },
          "description": {
            "description": "The description of the element.",
            "type": "string"
          }
        }
      },
      "PartyDefinition": {
        "description": "Information on the party linked to a report.",
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "description": "The name of the party.",
            "type": "string"
          },
          "properties": {
            "$ref": "#/components/schemas/PartyProperties"
          }
        }
      },
      "PartyProperties": {
        "description": "The list of custom party properties",
        "type": "object",
        "properties": {
          "property": {
            "description": "A custom party property.",
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name"
              ],
              "properties": {
                "name": {
                  "description": "The name of the property",
                  "type": "string",
                  "xml": {
                    "attribute": true
                  }
                }
              }
            }
          }
        }
      },
      "TestDefinitionMetadata": {
        "description": "Metadata about the relevant test case/suite.",
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "description": "The test case/suite's name.",
            "type": "string"
          },
          "version": {
            "description": "The test case/suite's version.",
            "type": "string"
          },
          "description": {
            "description": "The test case/suite's description.",
            "type": "string"
          },
          "tags": {
            "description": "The test case/suite's tags.",
            "type": "array",
            "minItems": 0,
            "items": {
              "type": "object",
              "properties": {
                "tag": {
                  "description": "A test case/suite tag.",
                  "type": "object",
                  "required": [
                    "name"
                  ],
                  "properties": {
                    "name": {
                      "description": "The name of the tag.",
                      "type": "string",
                      "xml": {
                        "attribute": true
                      }
                    },
                    "foreground": {
                      "description": "The foreground colour of the tag.",
                      "type": "string",
                      "xml": {
                        "attribute": true
                      }
                    },
                    "background": {
                      "description": "The background colour of the tag.",
                      "type": "string",
                      "xml": {
                        "attribute": true
                      }
                    }
                  }
                }
              }
            }
          },
          "specification": {
            "description": "The normative specification reference for the test case.",
            "type": "object",
            "properties": {
              "reference": {
                "description": "The specification's reference code.",
                "type": "string"
              },
              "description": {
                "description": "A description of the specification reference.",
                "type": "string"
              },
              "link": {
                "description": "A link to online documentation for the specification.",
                "type": "string"
              }
            }
          }
        }
      },
      "TestCaseOverviewReport": {
        "description": "XML test case report for a given test session.",
        "type": "object",
        "required": [
          "id",
          "startTime",
          "result"
        ],
        "properties": {
          "id": {
            "description": "The relevant test case's identifier.",
            "type": "string",
            "xml": {
              "attribute": true
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/TestDefinitionMetadata"
          },
          "startTime": {
            "description": "The test session's start time.",
            "type": "string",
            "format": "yyyy-MM-ddTHH:mm:ss.SSSZ"
          },
          "endTime": {
            "description": "The test session's end time.",
            "type": "string",
            "format": "yyyy-MM-ddTHH:mm:ss.SSSZ"
          },
          "result": {
            "description": "The test session's overall result.",
            "type": "string",
            "enum": [
              "SUCCESS",
              "FAILURE",
              "UNDEFINED"
            ]
          },
          "message": {
            "description": "The resulting output message of the session.",
            "type": "string"
          },
          "steps": {
            "description": "The test step reports.",
            "type": "array",
            "minItems": 0,
            "items": {
              "type": "object",
              "properties": {
                "step": {
                  "description": "The report for a specific step.",
                  "type": "object",
                  "required": [
                    "id",
                    "report"
                  ],
                  "properties": {
                    "id": {
                      "description": "The test step's identifier'.",
                      "type": "string",
                      "xml": {
                        "attribute": true
                      }
                    },
                    "report": {
                      "description": "The test step's report.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "The test step's identifier'.",
                          "type": "string",
                          "xml": {
                            "attribute": true
                          }
                        },
                        "date": {
                          "description": "The test step's completion date.",
                          "type": "string",
                          "format": "yyyy-MM-ddTHH:mm:ss.SSSZ"
                        },
                        "result": {
                          "description": "The test step's result.",
                          "type": "string",
                          "enum": [
                            "SUCCESS",
                            "FAILURE",
                            "WARNING",
                            "UNDEFINED"
                          ]
                        },
                        "reports": {
                          "description": "The test step's report items.",
                          "type": "object",
                          "properties": {
                            "error": {
                              "description": "A step error.",
                              "type": "array",
                              "items": {
                                "oneOf": [
                                  {
                                    "$ref": "#/components/schemas/ReportItem"
                                  }
                                ]
                              }
                            },
                            "warning": {
                              "description": "A step warning.",
                              "type": "array",
                              "items": {
                                "oneOf": [
                                  {
                                    "$ref": "#/components/schemas/ReportItem"
                                  }
                                ]
                              }
                            },
                            "info": {
                              "description": "A step information message.",
                              "type": "array",
                              "items": {
                                "oneOf": [
                                  {
                                    "$ref": "#/components/schemas/ReportItem"
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "ReportItem": {
        "description": "Details of a specific test step report item.",
        "type": "object",
        "properties": {
          "assertionID": {
            "description": "The identifier of an assertion linked to the relevant rule.",
            "type": "string"
          },
          "description": {
            "description": "The message produced by the relevant rule.",
            "type": "string"
          },
          "location": {
            "description": "The location in the processed content relevant to this finding.",
            "type": "string"
          },
          "test": {
            "description": "The test that was executed.",
            "type": "string"
          },
          "type": {
            "description": "The type of test carried out.",
            "type": "string"
          },
          "value": {
            "description": "The detected value that lead to the finding being reported.",
            "type": "string"
          }
        },
        "required": [
          "description"
        ]
      },
      "ConfigureRequest": {
        "description": "Information on the configuration updates to carry out.",
        "type": "object",
        "properties": {
          "domainProperties": {
            "description": "Updates to domain properties.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DomainPropertyConfigurationEntry"
            }
          },
          "organisationProperties": {
            "description": "Updates to organisation properties.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrganisationConfigurationEntry"
            }
          },
          "systemProperties": {
            "description": "Updates to system properties.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SystemConfigurationEntry"
            }
          },
          "statementProperties": {
            "description": "Updates to conformance statement properties.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConformanceStatementConfigurationEntry"
            }
          }
        }
      },
      "DomainPropertyConfigurationEntry": {
        "description": "Configuration update to apply to a given domain property.",
        "type": "object",
        "properties": {
          "key": {
            "description": "The unique key used to identify the configuration property.",
            "type": "string"
          },
          "value": {
            "description": "The value to apply for the configuration property (if missing this signals a delete of the existing value).",
            "type": "string"
          },
          "domain": {
            "description": "The API key to identify the domain under which this property is defined (in case of multiple domains defining the same property).",
            "type": "string"
          }
        },
        "required": [
          "key"
        ],
        "additionalProperties": false
      },
      "OrganisationConfigurationEntry": {
        "description": "Configuration updates to apply to a given organisation.",
        "type": "object",
        "properties": {
          "organisation": {
            "description": "The API key used to identify the organisation.",
            "type": "string"
          },
          "properties": {
            "description": "The updates to carry out on organisation properties.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfigurationEntry"
            },
            "minItems": 1
          }
        },
        "required": [
          "organisation",
          "properties"
        ],
        "additionalProperties": false
      },
      "SystemConfigurationEntry": {
        "description": "Configuration updates to apply to a given system.",
        "type": "object",
        "properties": {
          "system": {
            "description": "The API key used to identify the system.",
            "type": "string"
          },
          "properties": {
            "description": "The updates to carry out on system properties.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfigurationEntry"
            },
            "minItems": 1
          }
        },
        "required": [
          "system",
          "properties"
        ],
        "additionalProperties": false
      },
      "ConformanceStatementConfigurationEntry": {
        "description": "Configuration updates to apply for a given conformance statement.",
        "type": "object",
        "properties": {
          "system": {
            "description": "The API key used to identify the relevant system.",
            "type": "string"
          },
          "actor": {
            "description": "The API key used to identify the relevant actor.",
            "type": "string"
          },
          "properties": {
            "description": "The updates to carry out on the statement's properties.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfigurationEntry"
            },
            "minItems": 1
          }
        },
        "required": [
          "system",
          "actor",
          "properties"
        ],
        "additionalProperties": false
      },
      "ConfigurationEntry": {
        "description": "The value for configuration item identified by its unique key.",
        "type": "object",
        "properties": {
          "key": {
            "description": "The unique key used to identify the configuration property.",
            "type": "string"
          },
          "value": {
            "description": "The value to apply for the configuration property (if missing this signals a delete of the existing value).",
            "type": "string"
          }
        },
        "required": [
          "key"
        ],
        "additionalProperties": false
      },
      "ConfigureResponse": {
        "description": "The results of a configuration update.",
        "type": "object",
        "properties": {
          "messages": {
            "description": "The list of warning messages for updates that could not be carried out.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "DomainParameterCreationInfo": {
        "description": "The data for the new domain parameter.",
        "type": "object",
        "properties": {
          "key": {
            "description": "The unique key used to identify the parameter.",
            "type": "string"
          },
          "value": {
            "description": "The value to apply for the parameter.",
            "type": "string"
          },
          "description": {
            "description": "The parameter's description.",
            "type": "string"
          },
          "inTests": {
            "description": "Whether the parameter should be exposed to test sessions.",
            "type": "boolean",
            "default": true
          },
          "domain": {
            "description": "The API key identifying the domain of the parameter. This is required if the community API key used for authentication refers to a community that is not linked to a specific domain.",
            "type": "string"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "additionalProperties": false
      },
      "DomainParameterUpdateInfo": {
        "description": "The domain parameter's identification and updates.",
        "type": "object",
        "properties": {
          "key": {
            "description": "The unique key used to identify the parameter.",
            "type": "string"
          },
          "value": {
            "description": "The new value to apply for the parameter. Skip this if no update should be made.",
            "type": "string"
          },
          "description": {
            "description": "The parameter's description. Skip this if no update should be made or set with an empty string to delete the current value.",
            "type": "string"
          },
          "inTests": {
            "description": "Whether the parameter should be exposed to test sessions. Skip this if no update should be made.",
            "type": "boolean"
          },
          "domain": {
            "description": "The API key identifying the domain of the parameter. This is required if the community API key used for authentication refers to a community that is not linked to a specific domain.",
            "type": "string"
          }
        },
        "required": [
          "key"
        ],
        "additionalProperties": false
      },
      "TestServiceCreationInfo": {
        "description": "The data for the new test service.",
        "type": "object",
        "properties": {
          "key": {
            "description": "The unique key used to identify the service and its underlying domain parameter.",
            "type": "string"
          },
          "address": {
            "description": "The service's address as an absolute HTTP URL.",
            "type": "string"
          },
          "description": {
            "description": "The service's description.",
            "type": "string"
          },
          "serviceType": {
            "description": "The type of the service.",
            "type": "string",
            "enum": ["messaging", "validation", "processing"]
          },
          "apiType": {
            "description": "The API type of the service.",
            "type": "string",
            "enum": ["soap", "rest"],
            "default": "soap"
          },
          "authBasicUsername": {
            "description": "When HTTP basic authentication is used, this is the username to use.",
            "type": "string"
          },
          "authBasicPassword": {
            "description": "When HTTP basic authentication is used, this is the password to use.",
            "type": "string"
          },
          "authTokenUsername": {
            "description": "When the WS-Security UsernameToken profile is used, this is the username to use.",
            "type": "string"
          },
          "authTokenPassword": {
            "description": "When the WS-Security UsernameToken profile is used, this is the password to use.",
            "type": "string"
          },
          "authTokenPasswordType": {
            "description": "When the WS-Security UsernameToken profile is used, this is the type of password provision to use.",
            "type": "string",
            "enum": ["digest", "text"]
          },
          "identifier": {
            "description": "The service's reference identifier.",
            "type": "string"
          },
          "version": {
            "description": "The service's version.",
            "type": "string"
          },
          "domain": {
            "description": "The API key identifying the domain of the service. This is required if the community API key used for authentication refers to a community that is not linked to a specific domain.",
            "type": "string"
          },
          "replaceExisting": {
            "description": "In case the service information matches an existing domain parameter, this flag can be used to link the parameter with the service's definition.",
            "type": "boolean"
          }
        },
        "required": [
          "key",
          "address",
          "serviceType"
        ],
        "additionalProperties": false
      },
      "TestServiceUpdateInfo": {
        "description": "The test service's identification and updates.",
        "type": "object",
        "properties": {
          "key": {
            "description": "The unique key used to identify the service and its underlying domain parameter.",
            "type": "string"
          },
          "address": {
            "description": "The new address to apply for the service. Skip this if no update should be made.",
            "type": "string"
          },
          "description": {
            "description": "The service's description. Skip this if no update should be made.",
            "type": "string"
          },
          "serviceType": {
            "description": "The type of the service. Skip this if no update should be made.",
            "type": "string",
            "enum": ["messaging", "validation", "processing"]
          },
          "apiType": {
            "description": "The API type of the service. Skip this if no update should be made.",
            "type": "string",
            "enum": ["soap", "rest"],
            "default": "soap"
          },
          "authBasicUsername": {
            "description": "When HTTP basic authentication is used, this is the username to use. Skip this if no update should be made or set with an empty string to delete all basic authentication information.",
            "type": "string"
          },
          "authBasicPassword": {
            "description": "When HTTP basic authentication is used, this is the password to use. Skip this if no update should be made.",
            "type": "string"
          },
          "authTokenUsername": {
            "description": "When the WS-Security UsernameToken profile is used, this is the username to use. Skip this if no update should be made or set with an empty string to delete all token authentication information.",
            "type": "string"
          },
          "authTokenPassword": {
            "description": "When the WS-Security UsernameToken profile is used, this is the password to use. Skip this if no update should be made.",
            "type": "string"
          },
          "authTokenPasswordType": {
            "description": "When the WS-Security UsernameToken profile is used, this is the type of password provision to use. Skip this if no update should be made.",
            "type": "string",
            "enum": ["digest", "text"]
          },
          "identifier": {
            "description": "The service's reference identifier. Skip this if no update should be made or set with an empty string to delete the existing value.",
            "type": "string"
          },
          "version": {
            "description": "The service's version. Skip this if no update should be made or set with an empty string to delete the existing value.",
            "type": "string"
          },
          "domain": {
            "description": "The API key identifying the domain of the service. This is required if the community API key used for authentication refers to a community that is not linked to a specific domain.",
            "type": "string"
          }
        },
        "required": [
          "key"
        ],
        "additionalProperties": false
      },
      "TestService": {
        "description": "A test service's information.",
        "type": "object",
        "properties": {
          "key": {
            "description": "The unique key used to identify the service and its underlying domain parameter.",
            "type": "string"
          },
          "domain": {
            "description": "The API key identifying the domain of the service.",
            "type": "string"
          },
          "address": {
            "description": "The service's address.",
            "type": "string"
          },
          "serviceType": {
            "description": "The type of the service.",
            "type": "string",
            "enum": ["messaging", "validation", "processing"]
          },
          "apiType": {
            "description": "The API type of the service.",
            "type": "string",
            "enum": ["soap", "rest"],
            "default": "soap"
          },
          "description": {
            "description": "The service's description.",
            "type": "string"
          },
          "identifier": {
            "description": "The service's reference identifier.",
            "type": "string"
          },
          "version": {
            "description": "The service's version.",
            "type": "string"
          }
        },
        "required": [
          "key",
          "domain",
          "address",
          "serviceType",
          "apiType"
        ],
        "additionalProperties": false
      },
      "AllowedPropertyValue": {
        "description": "An entry for a configuration property representing an allowed value and its display label.",
        "type": "object",
        "properties": {
          "value": {
            "description": "The property value.",
            "type": "string"
          },
          "label": {
            "description": "The property's display label.",
            "type": "string"
          }
        },
        "required": [
          "value",
          "label"
        ],
        "additionalProperties": false
      },
      "OrganisationPropertyInfo": {
        "description": "The data for the organisation property.",
        "type": "object",
        "properties": {
          "key": {
            "description": "The unique key used to identify the property.",
            "type": "string"
          },
          "name": {
            "description": "The property's name. If not set this will be the same as the property's key.",
            "type": "string"
          },
          "description": {
            "description": "The property's description.",
            "type": "string"
          },
          "required": {
            "description": "Whether the property must be set before executing test sessions.",
            "type": "boolean",
            "default": true
          },
          "editableByUsers": {
            "description": "Whether the property can be set by organisation users.",
            "type": "boolean",
            "default": true
          },
          "inTests": {
            "description": "Whether the property should be exposed to test sessions.",
            "type": "boolean",
            "default": false
          },
          "inExports": {
            "description": "Whether the property should be included in exports.",
            "type": "boolean",
            "default": false
          },
          "inSelfRegistration": {
            "description": "Whether the property should be requested during self-registration.",
            "type": "boolean",
            "default": false
          },
          "hidden": {
            "description": "Whether the property should be hidden from organisation users.",
            "type": "boolean",
            "default": false
          },
          "allowedValues": {
            "description": "The list of allowed values for the property.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AllowedPropertyValue"
            }
          },
          "displayOrder": {
            "description": "The display order of the property when presented to users.",
            "type": "number"
          },
          "dependsOn": {
            "description": "The key of another property upon which this property's applicability depends on (see also dependsOnValue).",
            "type": "string"
          },
          "dependsOnValue": {
            "description": "If the dependsOn property is set, this is the value that the referred-to property needs to have for this property to be considered applicable.",
            "type": "string"
          },
          "defaultValue": {
            "description": "The default value of the property when a new organisation is created.",
            "type": "string"
          }
        },
        "required": [
          "key"
        ],
        "additionalProperties": false
      },
      "SystemPropertyInfo": {
        "description": "The data for the system property.",
        "type": "object",
        "properties": {
          "key": {
            "description": "The unique key used to identify the property.",
            "type": "string"
          },
          "name": {
            "description": "The property's name. If not set this will be the same as the property's key.",
            "type": "string"
          },
          "description": {
            "description": "The property's description.",
            "type": "string"
          },
          "required": {
            "description": "Whether the property must be set before executing test sessions.",
            "type": "boolean",
            "default": true
          },
          "editableByUsers": {
            "description": "Whether the property can be set by organisation users.",
            "type": "boolean",
            "default": true
          },
          "inTests": {
            "description": "Whether the property should be exposed to test sessions.",
            "type": "boolean",
            "default": false
          },
          "inExports": {
            "description": "Whether the property should be included in exports.",
            "type": "boolean",
            "default": false
          },
          "hidden": {
            "description": "Whether the property should be hidden from organisation users.",
            "type": "boolean",
            "default": false
          },
          "allowedValues": {
            "description": "The list of allowed values for the property.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AllowedPropertyValue"
            }
          },
          "displayOrder": {
            "description": "The display order of the property when presented to users.",
            "type": "number"
          },
          "dependsOn": {
            "description": "The key of another property upon which this property's applicability depends on (see also dependsOnValue).",
            "type": "string"
          },
          "dependsOnValue": {
            "description": "If the dependsOn property is set, this is the value that the referred-to property needs to have for this property to be considered applicable.",
            "type": "string"
          },
          "defaultValue": {
            "description": "The default value of the property when a new system is created.",
            "type": "string"
          }
        },
        "required": [
          "key"
        ],
        "additionalProperties": false
      },
      "StatementPropertyInfo": {
        "description": "The data for the statement property.",
        "type": "object",
        "properties": {
          "key": {
            "description": "The unique key used to identify the property.",
            "type": "string"
          },
          "name": {
            "description": "The property's name. If not set this will be the same as the property's key.",
            "type": "string"
          },
          "description": {
            "description": "The property's description.",
            "type": "string"
          },
          "required": {
            "description": "Whether the property must be set before executing test sessions.",
            "type": "boolean",
            "default": true
          },
          "editableByUsers": {
            "description": "Whether the property can be set by organisation users.",
            "type": "boolean",
            "default": true
          },
          "inTests": {
            "description": "Whether the property should be exposed to test sessions.",
            "type": "boolean",
            "default": false
          },
          "inExports": {
            "description": "Whether the property should be included in exports.",
            "type": "boolean",
            "default": false
          },
          "hidden": {
            "description": "Whether the property should be hidden from organisation users.",
            "type": "boolean",
            "default": false
          },
          "allowedValues": {
            "description": "The list of allowed values for the property.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AllowedPropertyValue"
            }
          },
          "displayOrder": {
            "description": "The display order of the property when presented to users.",
            "type": "number"
          },
          "dependsOn": {
            "description": "The key of another property upon which this property's applicability depends on (see also dependsOnValue).",
            "type": "string"
          },
          "dependsOnValue": {
            "description": "If the dependsOn property is set, this is the value that the referred-to property needs to have for this property to be considered applicable.",
            "type": "string"
          },
          "defaultValue": {
            "description": "The default value of the property when a new conformance statement is created.",
            "type": "string"
          }
        },
        "required": [
          "key"
        ],
        "additionalProperties": false
      },
      "ApiKeyResponse": {
        "description": "The API key that was assigned to the creation of a new element.",
        "type": "object",
        "properties": {
          "apiKey": {
            "description": "The API key value.",
            "type": "string"
          }
        },
        "required": [
          "apiKey"
        ],
        "additionalProperties": false
      },
      "CreateCommunityRequest": {
        "description": "The data used to create a new community.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The community's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The community's full name.",
            "type": "string"
          },
          "description": {
            "description": "The community's description.",
            "type": "string"
          },
          "supportEmail": {
            "description": "A support email address to receive community-specific notifications at.",
            "type": "string"
          },
          "interactionNotifications": {
            "description": "Whether to receive notifications for pending interactions by email at the support mailbox (see supportEmail).",
            "type": "boolean",
            "default": false
          },
          "apiKey": {
            "description": "The API key to set for the community. If this key is already assigned, a new one will be generated.",
            "type": "string"
          },
          "domain": {
            "description": "The API key identifying a domain that should be linked to the community.",
            "type": "string"
          }
        },
        "required": [
          "shortName",
          "fullName"
        ],
        "additionalProperties": false
      },
      "UpdateCommunityRequest": {
        "description": "The data used to define the updates to make to a target community.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The community's short name. Skip this if no update should be made.",
            "type": "string"
          },
          "fullName": {
            "description": "The community's full name. Skip this if no update should be made.",
            "type": "string"
          },
          "description": {
            "description": "The community's description. Skip this if no update should be made or set to an empty string to remove the current value.",
            "type": "string"
          },
          "supportEmail": {
            "description": "A support email address to receive community-specific notifications at. Skip this if no update should be made or set to an empty string to remove the current value.",
            "type": "string"
          },
          "interactionNotifications": {
            "description": "Whether to receive notifications for pending interactions by email at the support mailbox (see supportEmail). Skip this if no update should be made.",
            "type": "boolean"
          },
          "domain": {
            "description": "The API key identifying a domain that should be linked to the community. Skip this if no update should be made or set to an empty string to unlink the community from its existing domain (without deleting the domain).",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Organisation": {
        "description": "An organisation.",
        "type": "object",
        "properties": {
          "apiKey": {
            "description": "The organisation's API key.",
            "type": "string"
          },
          "shortName": {
            "description": "The organisation's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The organisation's full name.",
            "type": "string"
          }
        },
        "required": [
          "apiKey",
          "shortName",
          "fullName"
        ],
        "additionalProperties": false
      },
      "CreateOrganisationRequest": {
        "description": "The data used to create a new organisation.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The organisation's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The organisation's full name.",
            "type": "string"
          },
          "apiKey": {
            "description": "The API key to set for the organisation. If this key is already assigned, a new one will be generated.",
            "type": "string"
          }
        },
        "required": [
          "shortName",
          "fullName"
        ],
        "additionalProperties": false
      },
      "UpdateOrganisationRequest": {
        "description": "The data used to define the updates to make to a target organisation.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The organisation's short name. Skip this if no update should be made.",
            "type": "string"
          },
          "fullName": {
            "description": "The organisation's full name. Skip this if no update should be made.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "System": {
        "description": "A system.",
        "type": "object",
        "properties": {
          "apiKey": {
            "description": "The system's API key.",
            "type": "string"
          },
          "shortName": {
            "description": "The system's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The system's full name.",
            "type": "string"
          },
          "description": {
            "description": "The system's description.",
            "type": "string"
          },
          "version": {
            "description": "The system's version information.",
            "type": "string"
          }
        },
        "required": [
          "apiKey",
          "shortName",
          "fullName",
          "description",
          "version"
        ],
        "additionalProperties": false
      },
      "CreateSystemRequest": {
        "description": "The data used to create a new system.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The system's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The system's full name.",
            "type": "string"
          },
          "description": {
            "description": "The system's description.",
            "type": "string"
          },
          "version": {
            "description": "The system's version information.",
            "type": "string"
          },
          "apiKey": {
            "description": "The API key to set for the system. If this key is already assigned, a new one will be generated.",
            "type": "string"
          },
          "organisation": {
            "description": "The API key identifying the organisation in which to create the system.",
            "type": "string"
          }
        },
        "required": [
          "shortName",
          "fullName",
          "organisation"
        ],
        "additionalProperties": false
      },
      "UpdateSystemRequest": {
        "description": "The data used to define the updates to make to a target system.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The system's short name. Skip this if no update should be made.",
            "type": "string"
          },
          "fullName": {
            "description": "The system's full name. Skip this if no update should be made.",
            "type": "string"
          },
          "description": {
            "description": "The system's description. Skip this if no update should be made or provide as an empty string to remove the current value.",
            "type": "string"
          },
          "version": {
            "description": "The system's version information. Skip this if no update should be made or provide as an empty string to remove the current value.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Domain": {
        "description": "A domain.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The domain's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The domain's full name.",
            "type": "string"
          },
          "description": {
            "description": "The domain's description.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The domain's additional metadata for XML reports.",
            "type": "string"
          },
          "apiKey": {
            "description": "The domain's API key.",
            "type": "string"
          }
        },
        "required": [
          "shortName",
          "fullName",
          "apiKey"
        ],
        "additionalProperties": false
      },
      "CreateDomainRequest": {
        "description": "The data used to create a new domain.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The domain's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The domain's full name.",
            "type": "string"
          },
          "description": {
            "description": "The domain's description.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The domain's additional metadata for XML reports.",
            "type": "string"
          },
          "apiKey": {
            "description": "The API key to set for the domain. If this key is already assigned, a new one will be generated.",
            "type": "string"
          }
        },
        "required": [
          "shortName",
          "fullName"
        ],
        "additionalProperties": false
      },
      "UpdateDomainRequest": {
        "description": "The data used to define the updates to make to a target domain.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The domain's short name. Skip this if no update should be made.",
            "type": "string"
          },
          "fullName": {
            "description": "The domain's full name. Skip this if no update should be made.",
            "type": "string"
          },
          "description": {
            "description": "The domain's description. Skip this if no update should be made or provide as an empty string to remove the current value.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The domain's additional metadata for XML reports.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "SpecificationGroup": {
        "description": "A specification group.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The group's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The group's full name.",
            "type": "string"
          },
          "description": {
            "description": "The group's description.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The group's additional metadata for XML reports.",
            "type": "string"
          },
          "displayOrder": {
            "description": "The group's display order relative to other groups and specifications.",
            "type": "number"
          },
          "apiKey": {
            "description": "The group's API key.",
            "type": "string"
          }
        },
        "required": [
          "shortName",
          "fullName",
          "apiKey"
        ],
        "additionalProperties": false
      },
      "CreateSpecificationGroupRequest": {
        "description": "The data used to create a new specification group.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The group's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The group's full name.",
            "type": "string"
          },
          "description": {
            "description": "The group's description.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The group's additional metadata for XML reports.",
            "type": "string"
          },
          "displayOrder": {
            "description": "The group's display order relative to other groups and specifications.",
            "type": "number"
          },
          "apiKey": {
            "description": "The API key to set for the group. If this key is already assigned, a new one will be generated.",
            "type": "string"
          },
          "domain": {
            "description": "The API key of the domain within which to create the group. This can be omitted if the community identified by the community API key used for authorisation is linked to a specific domain.",
            "type": "string"
          }
        },
        "required": [
          "shortName",
          "fullName"
        ],
        "additionalProperties": false
      },
      "UpdateSpecificationGroupRequest": {
        "description": "The data used to define the updates to make to a target specification group.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The group's short name. Skip this if no update should be made.",
            "type": "string"
          },
          "fullName": {
            "description": "The group's full name. Skip this if no update should be made.",
            "type": "string"
          },
          "description": {
            "description": "The group's description. Skip this if no update should be made or provide as an empty string to remove the current value.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The group's additional metadata for XML reports.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Specification": {
        "description": "A specification.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The specification's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The specification's full name.",
            "type": "string"
          },
          "description": {
            "description": "The specification's description.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The specification's additional metadata for XML reports.",
            "type": "string"
          },
          "hidden": {
            "description": "Whether the specification should be hidden.",
            "type": "boolean",
            "default": false
          },
          "displayOrder": {
            "description": "The specification's display order relative to other groups and specifications.",
            "type": "number"
          },
          "apiKey": {
            "description": "The specification's API key.",
            "type": "string"
          }
        },
        "required": [
          "shortName",
          "fullName",
          "apiKey"
        ],
        "additionalProperties": false
      },
      "CreateSpecificationRequest": {
        "description": "The data used to create a new specification.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The specification's short name.",
            "type": "string"
          },
          "fullName": {
            "description": "The specification's full name.",
            "type": "string"
          },
          "description": {
            "description": "The specification's description.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The specification's additional metadata for XML reports.",
            "type": "string"
          },
          "hidden": {
            "description": "Whether the specification should be hidden.",
            "type": "boolean",
            "default": false
          },
          "displayOrder": {
            "description": "The specification's display order relative to other groups and specifications.",
            "type": "number"
          },
          "apiKey": {
            "description": "The API key to set for the specification. If this key is already assigned, a new one will be generated.",
            "type": "string"
          },
          "group": {
            "description": "The API key of the specification group within which to create the specification. If not provided the specification will be created directly under the domain.",
            "type": "string"
          },
          "domain": {
            "description": "The API key of the domain within which to create the specification. This can be omitted if the community identified by the community API key used for authorisation is linked to a specific domain.",
            "type": "string"
          }
        },
        "required": [
          "shortName",
          "fullName"
        ],
        "additionalProperties": false
      },
      "UpdateSpecificationRequest": {
        "description": "The data used to define the updates to make to a target specification.",
        "type": "object",
        "properties": {
          "shortName": {
            "description": "The specification's short name. Skip this if no update should be made.",
            "type": "string"
          },
          "fullName": {
            "description": "The specification's full name. Skip this if no update should be made.",
            "type": "string"
          },
          "description": {
            "description": "The specification's description. Skip this if no update should be made or provide as an empty string to remove the current value.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The specification's additional metadata for XML reports.",
            "type": "string"
          },
          "hidden": {
            "description": "Whether the specification should be hidden. Skip this if no update should be made.",
            "type": "boolean"
          },
          "displayOrder": {
            "description": "The specification's display order relative to other groups and specifications. Skip this if no update should be made or set to a negative value to remove the ordering altogether.",
            "type": "number"
          },
          "group": {
            "description": "The API key of the specification group within which to move the specification. Skip this if no update should be made or provide as an empty string to remove the specification from its current group.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Actor": {
        "description": "An actor.",
        "type": "object",
        "properties": {
          "identifier": {
            "description": "The actor's unique identifier in the specification, used to refer to it from test cases.",
            "type": "string"
          },
          "name": {
            "description": "The actor's display name.",
            "type": "string"
          },
          "description": {
            "description": "The actor's description.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The actor's additional metadata for XML reports.",
            "type": "string"
          },
          "default": {
            "description": "Whether the actor should be considered as the default choice for new conformance statements within its specification.",
            "type": "boolean",
            "default": false
          },
          "hidden": {
            "description": "Whether the actor should be hidden.",
            "type": "boolean",
            "default": false
          },
          "displayOrder": {
            "description": "The actor's display order relative to other actors when presented in test execution diagrams.",
            "type": "number"
          },
          "apiKey": {
            "description": "The actor's API key.",
            "type": "string"
          }
        },
        "required": [
          "identifier",
          "name",
          "apiKey"
        ],
        "additionalProperties": false
      },
      "CreateActorRequest": {
        "description": "The data used to create a new actor.",
        "type": "object",
        "properties": {
          "identifier": {
            "description": "The actor's unique identifier in the specification, used to refer to it from test cases.",
            "type": "string"
          },
          "name": {
            "description": "The actor's display name.",
            "type": "string"
          },
          "description": {
            "description": "The actor's description.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The actor's additional metadata for XML reports.",
            "type": "string"
          },
          "default": {
            "description": "Whether the actor should be considered as the default choice for new conformance statements within its specification.",
            "type": "boolean",
            "default": false
          },
          "hidden": {
            "description": "Whether the actor should be hidden.",
            "type": "boolean",
            "default": false
          },
          "displayOrder": {
            "description": "The actor's display order relative to other actors when presented in test execution diagrams.",
            "type": "number"
          },
          "apiKey": {
            "description": "The API key to set for the actor. If this key is already assigned, a new one will be generated.",
            "type": "string"
          },
          "specification": {
            "description": "The API key of the specification within which to create the actor.",
            "type": "string"
          }
        },
        "required": [
          "identifier",
          "name",
          "specification"
        ],
        "additionalProperties": false
      },
      "UpdateActorRequest": {
        "description": "The data used to define the updates to make to a target actor.",
        "type": "object",
        "properties": {
          "identifier": {
            "description": "The actor's unique identifier in the specification, used to refer to it from test cases. Skip this if no update should be made.",
            "type": "string"
          },
          "name": {
            "description": "The actor's display name. Skip this if no update should be made.",
            "type": "string"
          },
          "description": {
            "description": "The actor's description. Skip this if no update should be made or provide as an empty string to remove the current value.",
            "type": "string"
          },
          "reportMetadata": {
            "description": "The actor's additional metadata for XML reports.",
            "type": "string"
          },
          "default": {
            "description": "Whether the actor should be considered as the default choice for new conformance statements within its specification. Skip this if no update should be made.",
            "type": "boolean"
          },
          "hidden": {
            "description": "Whether the actor should be hidden. Skip this if no update should be made.",
            "type": "boolean"
          },
          "displayOrder": {
            "description": "The actor's display order relative to other actors when presented in test execution diagrams. Skip this if no update should be made or set to a negative value to remove the ordering altogether.",
            "type": "number"
          }
        },
        "additionalProperties": false
      },
      "ConformanceStatementKeys": {
        "description": "The API keys needed to identify a specific conformance statement.",
        "type": "object",
        "properties": {
          "system": {
            "description": "The API key of the statement's related system.",
            "type": "string"
          },
          "actor": {
            "description": "The API key of the statement's related actor.",
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "OrganisationApiKeyAuth": {
        "description": "The API key to identify a specific organisation.",
        "type": "apiKey",
        "in": "header",
        "name": "ITB_API_KEY"
      },
      "CommunityApiKeyAuth": {
        "description": "The API key to identify a specific community.",
        "type": "apiKey",
        "in": "header",
        "name": "ITB_API_KEY"
      },
      "MasterApiKeyAuth": {
        "description": "The API key to identify as the system administrator to perform administrative tasks.",
        "type": "apiKey",
        "in": "header",
        "name": "ITB_API_KEY"
      }
    }
  }
}