{
  "openapi": "3.0.1",
  "info": {
    "title": "Unibright.ONE",
    "description": "Unibright.ONE Service API",
    "termsOfService": "https://unibright.one/terms.html",
    "contact": {
      "name": "Unibright",
      "url": "https://unibright.io"
    },
    "version": "v1"
  },
  "paths": {
    "/api/account/login": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Login with your credentials",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Credentials"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Credentials"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Credentials"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/account/logout": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Sign out from a previous login",
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/account/token": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Request a JWT token with your credentials to make API calls",
        "description": "JWT token is valid for 24 hours",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Credentials"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Credentials"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Credentials"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/Notarizations": {
      "get": {
        "tags": [
          "Notarizations"
        ],
        "summary": "Get all your notarizations",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Notarization"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Notarization"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Notarization"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Notarizations/{id}": {
      "get": {
        "tags": [
          "Notarizations"
        ],
        "summary": "Get notarization by ID",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of requested notarization",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Notarizations/AllNotarizationTargets": {
      "get": {
        "tags": [
          "Notarizations"
        ],
        "summary": "Get all notarization targets/blockchains. Used for overwriting the default notarization for a certain request.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Notarizations/NotarizeString": {
      "post": {
        "tags": [
          "Notarizations"
        ],
        "summary": "Notarize a string value and optionally have a workgroup decide on notarization",
        "description": "Will notarize the hash of your input string along with the hash of your signature on that notarization in the given targrt chain",
        "parameters": [
          {
            "name": "NotarizationPayload",
            "in": "query",
            "description": "String to notarzie - its hash notarized",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Workgroup",
            "in": "query",
            "description": "[Optional] The workgroup to decide upon notarization - all members will be notified and asked for approval/rejection",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "UserSecret",
            "in": "query",
            "description": "[Optional] Allows for more entropy in the signature",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "OverwriteBlockchainTarget",
            "in": "query",
            "description": "[Optional] Define a different blockchain target for this request - otherwise your default setting will be used",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Notarizations/NotarizeSyncTreeJSON": {
      "post": {
        "tags": [
          "Notarizations"
        ],
        "summary": "Notarize a Business Object and optionally have a workgroup decide on notarization",
        "description": "Will notarize the root hash of your input business object in JSON notation along with the hash of your signature on that notarization in the given targrt chain.",
        "parameters": [
          {
            "name": "MaskedAttributes",
            "in": "query",
            "description": "[Optional] Array of masked attributes semicolon-separated for example: name; shipTo:city",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Workgroup",
            "in": "query",
            "description": "[Optional] The workgroup to decide upon notarization - all members will be notified and asked for approval/rejection",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "UserSecret",
            "in": "query",
            "description": "[Optional] Allows for more entropy in the signature",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "OverwriteBlockchainTarget",
            "in": "query",
            "description": "[Optional] Define a different blockchain target for this request - otherwise your default setting will be used",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Business Object in JSON notation to notarzie - will be transformed into a Synctree with its root hash notarized",
          "content": {
            "application/json": {
              "schema": { }
            },
            "text/json": {
              "schema": { }
            },
            "application/*+json": {
              "schema": { }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/SyncTree/CalculateSyncTree": {
      "post": {
        "tags": [
          "SyncTree"
        ],
        "summary": "Calculates a SyncTree from a given business object JSON representation with all nodes and hashes",
        "description": "Sample request:\r\n{ \"name\"   : \"John Smith\",\r\n  \"sku\"    : \"20223\",\r\n  \"price\"  : 23.95,\r\n  \"shipTo\" : { \"name\" : \"Jane Smith\",\r\n             \"address\" : \"123 Maple Street\",\r\n             \"city\" : \"Pretendville\",\r\n            \"state\" : \"NY\",\r\n             \"zip\"   : \"12345\" },\r\n \"billTo\" : { \"name\" : \"John Smith\",\r\n              \"address\" : \"123 Maple Street\",\r\n              \"city\" : \"Pretendville\",\r\n              \"state\" : \"NY\",\r\n              \"zip\"   : \"12345\" }\r\n  }",
        "parameters": [
          {
            "name": "maskedAttributes",
            "in": "query",
            "description": "[Optional] Array of masked attributes semicolon-separated for example: name; shipTo:city",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { }
            },
            "text/json": {
              "schema": { }
            },
            "application/*+json": {
              "schema": { }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/SyncTree/RecreateObjectFromSyncTree": {
      "post": {
        "tags": [
          "SyncTree"
        ],
        "summary": "Recreates a business object JSON out of a calculated SyncTree",
        "description": "Sample request:\r\n{\\\"RootProof\\\":\\\"3c0677a62b5b8df6deaf70e32051ea92\\\",\\\"Nodes\\\":[{\\\"SyncTreeNodeID\\\":\\\"cc9e88f2-0334-47f5-b604-9aa5c7dcb9bd\\\",\\\"ParentNodeId\\\":\\\"29b70794-50ed-4f08-851f-8e55b62f866e\\\",\\\"Value\\\":\\\"name: John Smith\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":0},{\\\"SyncTreeNodeID\\\":\\\"b597e39b-6745-48fd-b6e1-1cfa9fecd25a\\\",\\\"ParentNodeId\\\":\\\"29b70794-50ed-4f08-851f-8e55b62f866e\\\",\\\"Value\\\":\\\"sku: 20223\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":1},{\\\"SyncTreeNodeID\\\":\\\"a4f4fe0b-dc42-415e-a67c-e92f179cea50\\\",\\\"ParentNodeId\\\":\\\"27eeb951-a0bd-41dc-b7dc-9c1c3885ee0d\\\",\\\"Value\\\":\\\"price: 23,95\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":2},{\\\"SyncTreeNodeID\\\":\\\"0e675cd0-1c60-4e8c-820a-560e423ad82a\\\",\\\"ParentNodeId\\\":\\\"27eeb951-a0bd-41dc-b7dc-9c1c3885ee0d\\\",\\\"Value\\\":\\\"shipTo.name: Jane Smith\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":3},{\\\"SyncTreeNodeID\\\":\\\"c74e0ece-bf36-4663-9e55-29e95e491669\\\",\\\"ParentNodeId\\\":\\\"5b239cbe-b593-4f56-aa85-d7f9855efd89\\\",\\\"Value\\\":\\\"shipTo.address: 123 Maple Street\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":4},{\\\"SyncTreeNodeID\\\":\\\"be669ecd-edc5-4cdf-ba97-6c05099da8ff\\\",\\\"ParentNodeId\\\":\\\"5b239cbe-b593-4f56-aa85-d7f9855efd89\\\",\\\"Value\\\":\\\"shipTo.city: Pretendville\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":5},{\\\"SyncTreeNodeID\\\":\\\"d79eb659-f7d3-4b9b-909f-cbd18594dbfb\\\",\\\"ParentNodeId\\\":\\\"42053498-15ec-4b79-88cc-f0d8f3290592\\\",\\\"Value\\\":\\\"shipTo.state: NY\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":6},{\\\"SyncTreeNodeID\\\":\\\"444b994f-3157-4a77-ab5f-8a21e8be800f\\\",\\\"ParentNodeId\\\":\\\"42053498-15ec-4b79-88cc-f0d8f3290592\\\",\\\"Value\\\":\\\"shipTo.zip: 12345\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":7},{\\\"SyncTreeNodeID\\\":\\\"d03418a0-39c6-4fd5-b401-3a529af54e58\\\",\\\"ParentNodeId\\\":\\\"4ada0844-064d-41d0-a83c-de8d11cd5eb8\\\",\\\"Value\\\":\\\"billTo.name: John Smith\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":8},{\\\"SyncTreeNodeID\\\":\\\"a932b031-7f75-4380-a242-977fc75b598e\\\",\\\"ParentNodeId\\\":\\\"4ada0844-064d-41d0-a83c-de8d11cd5eb8\\\",\\\"Value\\\":\\\"billTo.address: 123 Maple Street\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":9},{\\\"SyncTreeNodeID\\\":\\\"9b24c39e-358e-4472-a852-be4599be525a\\\",\\\"ParentNodeId\\\":\\\"fbd1045a-1ff7-4173-b6fd-7af91b871212\\\",\\\"Value\\\":\\\"billTo.city: Pretendville\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":10},{\\\"SyncTreeNodeID\\\":\\\"89e7781a-9b34-4993-8b7e-7988000cae82\\\",\\\"ParentNodeId\\\":\\\"fbd1045a-1ff7-4173-b6fd-7af91b871212\\\",\\\"Value\\\":\\\"billTo.state: NY\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":11},{\\\"SyncTreeNodeID\\\":\\\"35f3b186-57d2-4ea8-a283-dfc0c73371b3\\\",\\\"ParentNodeId\\\":\\\"f9a33a80-ba8a-458d-8b2f-5579f031845e\\\",\\\"Value\\\":\\\"billTo.zip: 12345\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":12},{\\\"SyncTreeNodeID\\\":\\\"bb33c037-58e8-4d43-b675-c2c28ed498cf\\\",\\\"ParentNodeId\\\":\\\"f9a33a80-ba8a-458d-8b2f-5579f031845e\\\",\\\"Value\\\":\\\"\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":13},{\\\"SyncTreeNodeID\\\":\\\"d32c7e3a-e6f0-4335-9f63-62093642d585\\\",\\\"ParentNodeId\\\":\\\"8cc96f3b-1ca8-467b-b9ab-71b804a6c80d\\\",\\\"Value\\\":\\\"\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":14},{\\\"SyncTreeNodeID\\\":\\\"fa2daf61-0e81-467a-bf12-9d82e3b06a7d\\\",\\\"ParentNodeId\\\":\\\"8cc96f3b-1ca8-467b-b9ab-71b804a6c80d\\\",\\\"Value\\\":\\\"\\\",\\\"IsLeaf\\\":true,\\\"IsRoot\\\":false,\\\"IsHash\\\":false,\\\"IsCovered\\\":false,\\\"Level\\\":0,\\\"Index\\\":15},{\\\"SyncTreeNodeID\\\":\\\"29b70794-50ed-4f08-851f-8e55b62f866e\\\",\\\"ParentNodeId\\\":\\\"28cf8696-49d3-4e7a-8121-f84549ab0407\\\",\\\"Value\\\":\\\"9b4fdec4e5539f6f4d5fdabc607461cb\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":1,\\\"Index\\\":0},{\\\"SyncTreeNodeID\\\":\\\"27eeb951-a0bd-41dc-b7dc-9c1c3885ee0d\\\",\\\"ParentNodeId\\\":\\\"28cf8696-49d3-4e7a-8121-f84549ab0407\\\",\\\"Value\\\":\\\"4ab1940821c49ab753151b0b3ec11ae3\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":1,\\\"Index\\\":1},{\\\"SyncTreeNodeID\\\":\\\"5b239cbe-b593-4f56-aa85-d7f9855efd89\\\",\\\"ParentNodeId\\\":\\\"69183627-68aa-4001-a5dd-ade62ec76e57\\\",\\\"Value\\\":\\\"13a21f8b8418450e1296bad750f17ab5\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":1,\\\"Index\\\":2},{\\\"SyncTreeNodeID\\\":\\\"42053498-15ec-4b79-88cc-f0d8f3290592\\\",\\\"ParentNodeId\\\":\\\"69183627-68aa-4001-a5dd-ade62ec76e57\\\",\\\"Value\\\":\\\"123ea66d3b70741aeb4cd3f8c5a27f8a\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":1,\\\"Index\\\":3},{\\\"SyncTreeNodeID\\\":\\\"4ada0844-064d-41d0-a83c-de8d11cd5eb8\\\",\\\"ParentNodeId\\\":\\\"6d1a0c06-b724-4334-a84e-3e1dea9c3456\\\",\\\"Value\\\":\\\"13369697076e28e6d2cd15d047f9fe94\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":1,\\\"Index\\\":4},{\\\"SyncTreeNodeID\\\":\\\"fbd1045a-1ff7-4173-b6fd-7af91b871212\\\",\\\"ParentNodeId\\\":\\\"6d1a0c06-b724-4334-a84e-3e1dea9c3456\\\",\\\"Value\\\":\\\"8d0545bc4ea96eef610e871399376ef9\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":1,\\\"Index\\\":5},{\\\"SyncTreeNodeID\\\":\\\"f9a33a80-ba8a-458d-8b2f-5579f031845e\\\",\\\"ParentNodeId\\\":\\\"6baf9b8a-46ae-4bd0-b9a5-b53d2513b339\\\",\\\"Value\\\":\\\"2f1eda1d6e9af8a353bda0977565b885\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":1,\\\"Index\\\":6},{\\\"SyncTreeNodeID\\\":\\\"8cc96f3b-1ca8-467b-b9ab-71b804a6c80d\\\",\\\"ParentNodeId\\\":\\\"6baf9b8a-46ae-4bd0-b9a5-b53d2513b339\\\",\\\"Value\\\":\\\"b99834bc19bbad24580b3adfa04fb947\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":1,\\\"Index\\\":7},{\\\"SyncTreeNodeID\\\":\\\"28cf8696-49d3-4e7a-8121-f84549ab0407\\\",\\\"ParentNodeId\\\":\\\"b67bb8ab-621c-40e2-a3e2-6c4ac9dc9b3f\\\",\\\"Value\\\":\\\"af3293e571c90d7b7e46d0ed631928fd\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":2,\\\"Index\\\":0},{\\\"SyncTreeNodeID\\\":\\\"69183627-68aa-4001-a5dd-ade62ec76e57\\\",\\\"ParentNodeId\\\":\\\"b67bb8ab-621c-40e2-a3e2-6c4ac9dc9b3f\\\",\\\"Value\\\":\\\"a18ae2cf16418d7c62e21326ca0747c0\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":2,\\\"Index\\\":1},{\\\"SyncTreeNodeID\\\":\\\"6d1a0c06-b724-4334-a84e-3e1dea9c3456\\\",\\\"ParentNodeId\\\":\\\"d617ef80-bc68-4aa2-a42f-d9401082084f\\\",\\\"Value\\\":\\\"3543529ae2ad68bd07768ff6149b638c\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":2,\\\"Index\\\":2},{\\\"SyncTreeNodeID\\\":\\\"6baf9b8a-46ae-4bd0-b9a5-b53d2513b339\\\",\\\"ParentNodeId\\\":\\\"d617ef80-bc68-4aa2-a42f-d9401082084f\\\",\\\"Value\\\":\\\"9420408587bacc02bed67149ab197d62\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":2,\\\"Index\\\":3},{\\\"SyncTreeNodeID\\\":\\\"b67bb8ab-621c-40e2-a3e2-6c4ac9dc9b3f\\\",\\\"ParentNodeId\\\":\\\"856499fc-7194-4be2-a9b4-5d61669a33ba\\\",\\\"Value\\\":\\\"67951ce63d252f5c0633e78a4508d83e\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":3,\\\"Index\\\":0},{\\\"SyncTreeNodeID\\\":\\\"d617ef80-bc68-4aa2-a42f-d9401082084f\\\",\\\"ParentNodeId\\\":\\\"856499fc-7194-4be2-a9b4-5d61669a33ba\\\",\\\"Value\\\":\\\"cce094a08a00112514a2ed4fbbf84b87\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":false,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":3,\\\"Index\\\":1},{\\\"SyncTreeNodeID\\\":\\\"856499fc-7194-4be2-a9b4-5d61669a33ba\\\",\\\"ParentNodeId\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"Value\\\":\\\"3c0677a62b5b8df6deaf70e32051ea92\\\",\\\"IsLeaf\\\":false,\\\"IsRoot\\\":true,\\\"IsHash\\\":true,\\\"IsCovered\\\":false,\\\"Level\\\":4,\\\"Index\\\":0}]}",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": { }
            },
            "text/json": {
              "schema": { }
            },
            "application/*+json": {
              "schema": { }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Verifications/AllNotarizationTargets": {
      "get": {
        "tags": [
          "Verifications"
        ],
        "summary": "Get all notarization targets/blockchains. Used for overwriting the default notarization for a certain request.",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Verifications/VerifyExistenceAndOwnership": {
      "post": {
        "tags": [
          "Verifications"
        ],
        "summary": "Verify existence and ownership (signature) of an existing string notarization",
        "parameters": [
          {
            "name": "blockchainTarget",
            "in": "query",
            "description": "Target blockchain target used for natorization",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "blockchainTxId",
            "in": "query",
            "description": "Target blockchain specific ID of notarization transaction",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "PayloadToVerifiy",
            "in": "query",
            "description": "Payload to verify against notarized payload",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SignatureToVerify",
            "in": "query",
            "description": "Signature to verify against notarized signature",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "originalUser",
            "in": "query",
            "description": "User identification used for signing - default is email address of user",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userSecret",
            "in": "query",
            "description": "[Optional]User secret used for signed -if used",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Verifications/VerifySynctree": {
      "post": {
        "tags": [
          "Verifications"
        ],
        "summary": "Verify existence and ownership (signature) of an existing business object notarization.",
        "description": "Original business object JSON was transformed in to a SyncTree with its root hash notarized - given hash of SynctreePayloadToVerifiy will be verified against stored hash",
        "parameters": [
          {
            "name": "blockchainTarget",
            "in": "query",
            "description": "Target blockchain target used for natorization",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "blockchainTxId",
            "in": "query",
            "description": "Target blockchain specific ID of notarization transaction",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SignatureToVerify",
            "in": "query",
            "description": "Signature to verify against notarized signature",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "originalUser",
            "in": "query",
            "description": "User identification used for signing - default is email address of user",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userSecret",
            "in": "query",
            "description": "[Optional]User secret used for signed -if used",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "SyncTree payload to verify against notarized payload",
          "content": {
            "application/json": {
              "schema": { }
            },
            "text/json": {
              "schema": { }
            },
            "application/*+json": {
              "schema": { }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Verifications/VerifySignature": {
      "post": {
        "tags": [
          "Verifications"
        ],
        "summary": "Signature used when UserSecret given: SHA256-HASH( PAYLOAD + USER + USERSECRET)\r\nelse SHA256-HASH( PAYLOAD + USER)",
        "parameters": [
          {
            "name": "payload",
            "in": "query",
            "description": "Data to sign AKA payload",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user",
            "in": "query",
            "description": "User identifier within Unibright.ONE - default is user's email address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userSecret",
            "in": "query",
            "description": "[Optional] salt given by user for more entropy in signature",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Workgroups": {
      "get": {
        "tags": [
          "Workgroups"
        ],
        "summary": "Get all workgroups created by you with their participants",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Workgroup"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Workgroup"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Workgroup"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Workgroups/{id}": {
      "get": {
        "tags": [
          "Workgroups"
        ],
        "summary": "Get a specific workgroup created by you and its participants",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of Workgroup to query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Workgroups/GetPendingWorkgroupInvitations": {
      "get": {
        "tags": [
          "Workgroups"
        ],
        "summary": "Get all your pending workgroup invitations",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkgroupParticipant"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkgroupParticipant"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkgroupParticipant"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Workgroups/Create": {
      "post": {
        "tags": [
          "Workgroups"
        ],
        "summary": "Create a new workgroup with the given description. Participants are to be invited via invoking \"InviteParticipant\"",
        "parameters": [
          {
            "name": "Description",
            "in": "query",
            "description": "Workgroup description",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ApprovalsForAutomaticAcceptance",
            "in": "query",
            "description": "Number of needed approvals for automatic acceptance within workgroup",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AutomaticApprovalExiting",
            "in": "query",
            "description": "If set to true will exit an approval within workgroup",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "ApprovalVetoPossible",
            "in": "query",
            "description": "If set to true, one rejection within workgroup will prevent approval of notarization",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Workgroups/InviteParticipant": {
      "post": {
        "tags": [
          "Workgroups"
        ],
        "summary": "Invite participants via their email to a workgroup. Users need to be registered in Unibright.ONE with the given email address",
        "parameters": [
          {
            "name": "WorkgroupId",
            "in": "query",
            "description": "ID of workgroup",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ParticipantEmail",
            "in": "query",
            "description": "User by email to remove",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Workgroups/AcceptInvitation": {
      "post": {
        "tags": [
          "Workgroups"
        ],
        "summary": "Accept a pending workgroup invitation",
        "parameters": [
          {
            "name": "WorkgroupId",
            "in": "query",
            "description": "ID of workgroup",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Workgroups/Leave": {
      "post": {
        "tags": [
          "Workgroups"
        ],
        "summary": "Leave a workgroup you are member of",
        "parameters": [
          {
            "name": "WorkgroupId",
            "in": "query",
            "description": "ID of workgroup",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    },
    "/api/Workgroups/RemoveParticipant": {
      "post": {
        "tags": [
          "Workgroups"
        ],
        "summary": "Remove a participant from a workgroup you created by email used for inviting the participant",
        "parameters": [
          {
            "name": "WorkgroupId",
            "in": "query",
            "description": "ID of workgroup",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ParticipantEmail",
            "in": "query",
            "description": "User by email to remove",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Server Error"
          },
          "default": {
            "description": "Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorised"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "Bearer": [ ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "Credentials": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Notarization": {
        "required": [
          "createTime",
          "mode",
          "status",
          "target"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "status": {
            "minLength": 1,
            "type": "string"
          },
          "target": {
            "minLength": 1,
            "type": "string"
          },
          "mode": {
            "minLength": 1,
            "type": "string"
          },
          "payload": {
            "type": "string",
            "nullable": true
          },
          "userSecret": {
            "type": "string",
            "nullable": true
          },
          "payloadHash": {
            "type": "string",
            "nullable": true
          },
          "signature": {
            "type": "string",
            "nullable": true
          },
          "arguments": {
            "type": "string",
            "nullable": true
          },
          "costsInCredits": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "targetId": {
            "type": "string",
            "nullable": true
          },
          "targetTransactionQuery": {
            "type": "string",
            "nullable": true
          },
          "workgroup": {
            "type": "string",
            "nullable": true
          },
          "notificationApprovals": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "notificationRejections": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "exitPerformed": {
            "type": "boolean"
          },
          "exitNotarizationUserId": {
            "type": "string",
            "nullable": true
          },
          "exitNotarizationId": {
            "type": "integer",
            "format": "int64"
          },
          "createTime": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "Workgroup": {
        "required": [
          "creatorEmail",
          "creatorID",
          "description",
          "workgroupId"
        ],
        "type": "object",
        "properties": {
          "workgroupId": {
            "minLength": 1,
            "type": "string"
          },
          "description": {
            "minLength": 1,
            "type": "string"
          },
          "numberOfApprovalsForAcceptance": {
            "type": "integer",
            "format": "int32"
          },
          "automaticExitWhenApproved": {
            "type": "boolean"
          },
          "approvalVetoPossible": {
            "type": "boolean"
          },
          "creatorID": {
            "minLength": 1,
            "type": "string"
          },
          "creatorEmail": {
            "minLength": 1,
            "type": "string"
          },
          "participants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkgroupParticipant"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkgroupParticipant": {
        "required": [
          "participantEmail",
          "status",
          "workgroupId"
        ],
        "type": "object",
        "properties": {
          "workgroupId": {
            "minLength": 1,
            "type": "string"
          },
          "participantEmail": {
            "minLength": 1,
            "type": "string"
          },
          "status": {
            "minLength": 1,
            "type": "string"
          },
          "workgroup": {
            "$ref": "#/components/schemas/Workgroup"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "description": "Please enter a valid token",
        "scheme": "Bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}