{
"swagger": "2.0",
"info": {
"title": "Provision API",
"version": "1.0"
},
"host": "api.veracity.com",
"basePath": "/veracity/datafabric/provisioning",
"schemes": [
"https"
],
"securityDefinitions": {
"apiKeyHeader": {
"type": "apiKey",
"name": "Ocp-Apim-Subscription-Key",
"in": "header"
},
"apiKeyQuery": {
"type": "apiKey",
"name": "subscription-key",
"in": "query"
},
"oauth2B2C PROD OAuth - v2 endpoint": {
"type": "oauth2",
"scopes": {
"https://dnvglb2cprod.onmicrosoft.com/37c59c8d-cd9d-4cd5-b05a-e67f1650ee14/user_impersonation": ""
},
"flow": "accessCode",
"authorizationUrl": "https://login.veracity.com/dnvglb2cprod.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1A_SignInWithADFSIdp",
"tokenUrl": "https://login.veracity.com/dnvglb2cprod.onmicrosoft.com/oauth2/v2.0/token?p=B2C_1A_SignInWithADFSIdp"
}
},
"security": [
{
"apiKeyHeader": [],
"oauth2B2C PROD OAuth - v2 endpoint": [
"https://dnvglb2cprod.onmicrosoft.com/37c59c8d-cd9d-4cd5-b05a-e67f1650ee14/user_impersonation"
]
},
{
"apiKeyQuery": [],
"oauth2B2C PROD OAuth - v2 endpoint": [
"https://dnvglb2cprod.onmicrosoft.com/37c59c8d-cd9d-4cd5-b05a-e67f1650ee14/user_impersonation"
]
}
],
"paths": {
"/api/1/container": {
"post": {
"description": "Provision a blob storage container, requires a short name and storage container\r\nTo return correct values for \"StorageLocation\" use GET api/regions and use the \"azureName\"",
"operationId": "v1-0Container_ProvisionAzureBlobContainer",
"summary": "Create blob storage container",
"tags": [
"v1.0 Container"
],
"parameters": [
{
"name": "containerInput",
"in": "body",
"schema": {
"$ref": "#/definitions/ContainerInput"
}
}
],
"consumes": [
"application/json",
"text/json",
"application/xml",
"text/xml",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses": {
"202": {
"description": "Request accepted for processing. Note that provisioning can take up to 15 minutes. Please check DataApi to verify container was created. Returns new resource id",
"schema": {
"$ref": "#/definitions/Api1ContainerPost202TextXmlResponse"
},
"examples": {
"application/json": "00000000-0000-0000-0000-000000000000",
"text/json": "00000000-0000-0000-0000-000000000000",
"application/xml": "00000000-0000-0000-0000-000000000000",
"text/xml": "00000000-0000-0000-0000-000000000000"
}
},
"400": {
"description": "BadRequest"
},
"409": {
"description": ""
},
"502": {
"description": "Request to Identity API was unsuccessful."
}
}
}
},
"/api/1/container/{id}/metadata": {
"patch": {
"description": " JSON Patch (https://tools.ietf.org/html/rfc6902) defines a JSON document structure for expressing a sequence of operations to apply to a JavaScript Object Notation (JSON) document; it is suitable for use with the HTTP PATCH method. The \"application/json-patch+json\" media type is used to identify such patch documents.\r\n\r\n Example in this case:\r\n{\r\n \"value\": \"My new container name\",\r\n \"path\": \"Title\",\r\n \"op\": \"replace\"\r\n },\r\n This operation would replace the title\r\n\r\n \r\n A other example for update of tags (NOTE: remember to update the list of tags with all the tags)\r\n\t{\r\n \"value\": [\r\n {\r\n \"Title\" :\"First tag\"\r\n },\r\n {\r\n \"Title\" : \"Second tag\"\r\n }\r\n \r\n ],\r\n \"path\": \"Tags\",\r\n \"op\": \"replace\"\r\n }\r\n This operation would replace the tags",
"operationId": "v1-0Container_UpdateMetadata",
"summary": "Update Metadata",
"tags": [
"v1.0 Container"
],
"parameters": [
{
"name": "id",
"in": "path",
"description": "Format - uuid.",
"required": true,
"type": "string"
},
{
"name": "jsonPatchDocument[ResourceMetadata]",
"in": "body",
"schema": {
"$ref": "#/definitions/JsonPatchDocument[ResourceMetadata]"
}
}
],
"consumes": [
"application/json",
"text/json",
"application/xml",
"text/xml",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses": {
"200": {
"description": "Metadata was updated",
"schema": {
"$ref": "#/definitions/Resource"
},
"examples": {
"application/json": {
"id": "00000000-0000-0000-0000-000000000000",
"reference": "string",
"url": "string",
"lastModifiedUTC": "string",
"creationDateTimeUTC": "string",
"ownerId": "00000000-0000-0000-0000-000000000000",
"accessLevel": "owner",
"region": "string",
"keyStatus": "noKeys",
"mayContainPersonalData": "unknown",
"metadata": {
"title": "string",
"description": "string",
"icon": {
"id": "string",
"backgroundColor": "string"
},
"tags": [
{
"id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"type": "userTag"
}
]
}
},
"text/json": {
"id": "00000000-0000-0000-0000-000000000000",
"reference": "string",
"url": "string",
"lastModifiedUTC": "string",
"creationDateTimeUTC": "string",
"ownerId": "00000000-0000-0000-0000-000000000000",
"accessLevel": "owner",
"region": "string",
"keyStatus": "noKeys",
"mayContainPersonalData": "unknown",
"metadata": {
"title": "string",
"description": "string",
"icon": {
"id": "string",
"backgroundColor": "string"
},
"tags": [
{
"id": "00000000-0000-0000-0000-000000000000",
"title": "string",
"type": "userTag"
}
]
}
},
"application/xml": "\r\n 00000000-0000-0000-0000-000000000000\r\n string\r\n string\r\n string\r\n string\r\n 00000000-0000-0000-0000-000000000000\r\n owner\r\n string\r\n noKeys\r\n unknown\r\n \r\n string\r\n string\r\n \r\n string\r\n string\r\n \r\n \r\n 00000000-0000-0000-0000-000000000000\r\n string\r\n userTag\r\n \r\n \r\n",
"text/xml": "\r\n 00000000-0000-0000-0000-000000000000\r\n string\r\n string\r\n string\r\n string\r\n 00000000-0000-0000-0000-000000000000\r\n owner\r\n string\r\n noKeys\r\n unknown\r\n \r\n string\r\n string\r\n \r\n string\r\n string\r\n \r\n \r\n 00000000-0000-0000-0000-000000000000\r\n string\r\n userTag\r\n \r\n \r\n"
}
},
"403": {
"description": "Not resource owner"
},
"404": {
"description": "Resource was not found"
},
"500": {
"description": "Container metadata was not updated"
}
}
}
},
"/api/1/container/{id}": {
"delete": {
"description": "Deletes the blob storage container
\r\nYou need to be the owner of the resource to be able to delete the container.
\r\nWhat happens when the container is deleted: All active keys will stop working.
\r\nAll content on the container will be deleted and this action is not reversible
",
"operationId": "v1-0Container_DeleteAzureBlobContainer",
"summary": "Delete blob storage container",
"tags": [
"v1.0 Container"
],
"parameters": [
{
"name": "id",
"in": "path",
"description": "Format - uuid. Resource id (GUID)",
"required": true,
"type": "string"
}
],
"produces": [
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses": {
"202": {
"description": "Request accepted for processing: Azure Storage container will be deleted"
},
"403": {
"description": "Not resource owner"
},
"404": {
"description": "Resource was not found"
},
"500": {
"description": "Container not deleted"
}
}
}
},
"/api/1/regions": {
"get": {
"description": "Returns list of active regions supported by Veracity",
"operationId": "v1-0Regions_Get",
"summary": "List Active Regions",
"tags": [
"v1.0 Regions"
],
"produces": [
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses": {
"200": {
"description": "A list of active regions supported by veracity",
"schema": {
"$ref": "#/definitions/StorageRegionArray"
},
"examples": {
"application/json": [
{
"shortName": "string",
"fullName": "string",
"location": "string",
"azureName": "string",
"displayName": "string",
"groupName": "string"
}
],
"text/json": [
{
"shortName": "string",
"fullName": "string",
"location": "string",
"azureName": "string",
"displayName": "string",
"groupName": "string"
}
],
"application/xml": "\r\n string\r\n string\r\n string\r\n string\r\n string\r\n string\r\n",
"text/xml": "\r\n string\r\n string\r\n string\r\n string\r\n string\r\n string\r\n"
}
}
}
}
},
"/api/1/container/copycontainer": {
"post": {
"description": "Copies a given Container with its content with access sharing ID. \r\nFor successful requests, Returns 202 Accepted without waiting for container create or content copy is finished.",
"operationId": "v1-0Container_CopyContainer",
"summary": "Copy container",
"tags": [
"v1.0 Container"
],
"parameters": [
{
"name": "accessId",
"in": "query",
"description": "Format - uuid. Access Id",
"required": true,
"type": "string"
},
{
"name": "copyContainerInputVM",
"in": "body",
"schema": {
"$ref": "#/definitions/CopyContainerInputVM"
},
"description": "Values required to copy a container."
}
],
"consumes": [
"application/json",
"text/json",
"application/xml",
"text/xml",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses": {
"202": {
"description": "Request accepted for processing. Note that provisioning can take up to 15 minutes. Content copy may take longer depends on the size of the container. Returns new resource id",
"schema": {
"$ref": "#/definitions/Api1ContainerCopycontainerPost202TextXmlResponse"
},
"examples": {
"application/json": "00000000-0000-0000-0000-000000000000",
"text/json": "00000000-0000-0000-0000-000000000000",
"application/xml": "00000000-0000-0000-0000-000000000000",
"text/xml": "00000000-0000-0000-0000-000000000000"
}
},
"400": {
"description": "BadRequest"
}
}
}
},
"/api/1/container/SubscribeToBlobContainerEvents": {
"post": {
"description": "Provision a blob storage container subscription, requires container id, call back url and subscription name\r\nSubscription name must be unique through the entire application",
"operationId": "v1-0Container_SubscribeToAzureBlobContainerEvents",
"summary": "Create subscription to changes in blob container",
"tags": [
"v1.0 Container"
],
"parameters": [
{
"name": "containerSystemSubscriptionRequestVm",
"in": "body",
"schema": {
"$ref": "#/definitions/ContainerSystemSubscriptionRequestVm"
},
"description": "Subscription request"
}
],
"consumes": [
"application/json",
"text/json",
"application/xml",
"text/xml",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses": {
"202": {
"description": "Request accepted for completion."
},
"400": {
"description": "BadRequest"
},
"409": {
"description": ""
},
"502": {
"description": "Request to Identity API was unsuccessful."
}
}
},
"delete": {
"description": "Deletes a blob storage container subscription, requires subscription name",
"operationId": "v1-0Container_UnsubscribeFromCustomEvents",
"summary": "Delete subscription to changes in blob container",
"tags": [
"v1.0 Container"
],
"parameters": [
{
"name": "deleteContainerSubscriptionRequestVm",
"in": "body",
"schema": {
"$ref": "#/definitions/DeleteContainerSubscriptionRequestVm"
},
"description": "Subscription deleting request"
}
],
"consumes": [
"application/json",
"text/json",
"application/xml",
"text/xml",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses": {
"202": {
"description": "Request accepted for completion."
},
"400": {
"description": "BadRequest"
},
"409": {
"description": ""
},
"502": {
"description": "Request to Identity API was unsuccessful."
}
}
}
},
"/api/1/container/SubscribeToCustomEvents": {
"delete": {
"description": "Deletes a blob storage container subscription, requires subscription name",
"operationId": "v1-0Container_UnsubscribeFromAzureBlobContainerEvents",
"summary": "Delete subscription to changes in blob container",
"tags": [
"v1.0 Container"
],
"parameters": [
{
"name": "deleteContainerSubscriptionRequestVm",
"in": "body",
"schema": {
"$ref": "#/definitions/DeleteContainerSubscriptionRequestVm"
},
"description": "Subscription deleting request"
}
],
"consumes": [
"application/json",
"text/json",
"application/xml",
"text/xml",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses": {
"202": {
"description": "Request accepted for completion."
},
"400": {
"description": "BadRequest"
},
"409": {
"description": ""
},
"502": {
"description": "Request to Identity API was unsuccessful."
}
}
},
"post": {
"description": "Provision custom event subscription for a specific topic, call back url and subscription name\r\nSubscription name must be unique through the entire application",
"operationId": "v1-0Container_SubscribeToCustomEvents",
"summary": "Create subscription for custom events",
"tags": [
"v1.0 Container"
],
"parameters": [
{
"name": "containerCustomSubscriptionRequestVm",
"in": "body",
"schema": {
"$ref": "#/definitions/ContainerCustomSubscriptionRequestVm"
},
"description": "Subscription request"
}
],
"consumes": [
"application/json",
"text/json",
"application/xml",
"text/xml",
"application/x-www-form-urlencoded"
],
"produces": [
"application/json",
"text/json",
"application/xml",
"text/xml"
],
"responses": {
"202": {
"description": "Request accepted for completion."
},
"400": {
"description": "BadRequest"
},
"409": {
"description": ""
},
"502": {
"description": "Request to Identity API was unsuccessful."
}
}
}
}
},
"definitions": {
"ContainerInput": {
"description": "An input for provisioning a container",
"required": [
"storageLocation",
"mayContainPersonalData"
],
"type": "object",
"properties": {
"storageLocation": {
"description": "The Location which a storage container will be provisioned. Containers can only be created in supported regions",
"type": "string"
},
"containerShortName": {
"description": "5-32 character short name used to distinguish between storage containers. The name needs to be lowercase and alphanumeric. The full name of the container will comprise of this shortname plus a unique Guid genarated by the system. Note - storage containers can not be renamed",
"type": "string"
},
"mayContainPersonalData": {
"description": "Indicates whether the user has accepted that the container will not contain personal data. Required to be true for a user to upload a container",
"type": "boolean"
},
"title": {
"description": "A title of the container",
"type": "string"
},
"description": {
"description": "A description of the container",
"type": "string"
},
"icon": {
"$ref": "#/definitions/Icon",
"description": "An icon of the container"
},
"tags": {
"description": "List of container tags",
"type": "array",
"items": {
"$ref": "#/definitions/MetadataTag"
}
}
},
"example": {
"storageLocation": "string",
"containerShortName": "string",
"mayContainPersonalData": true,
"title": "string",
"description": "string",
"icon": {
"id": "string",
"backgroundColor": "string"
},
"tags": [
{
"title": "string",
"type": "userTag"
}
]
}
},
"Icon": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"backgroundColor": {
"type": "string"
}
}
},
"MetadataTag": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"type": {
"enum": [
"userTag",
"systemTag"
],
"type": "string"
}
}
},
"ContainerCustomSubscriptionRequestVm": {
"required": [
"subscriptionName",
"callback",
"topic",
"regions"
],
"type": "object",
"properties": {
"subscriptionName": {
"type": "string"
},
"callback": {
"type": "string"
},
"topic": {
"enum": [
"AccessShare"
],
"type": "string"
},
"regions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"example": {
"subscriptionName": "string",
"callback": "string",
"topic": "AccessShare",
"regions": [
"string"
]
}
},
"DeleteContainerSubscriptionRequestVm": {
"required": [
"subscriptionName",
"containerId"
],
"type": "object",
"properties": {
"subscriptionName": {
"type": "string"
},
"containerId": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
}
},
"example": {
"subscriptionName": "string",
"containerId": "00000000-0000-0000-0000-000000000000"
}
},
"ContainerSystemSubscriptionRequestVm": {
"required": [
"subscriptionName",
"containerId",
"subscriptionTypes",
"callback"
],
"type": "object",
"properties": {
"subscriptionName": {
"type": "string"
},
"containerId": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"subscriptionTypes": {
"type": "array",
"items": {
"enum": [
"BlobUpserted",
"BlobDeleted"
],
"type": "string"
}
},
"callback": {
"type": "string"
}
},
"example": {
"subscriptionName": "string",
"containerId": "00000000-0000-0000-0000-000000000000",
"subscriptionTypes": [
"BlobUpserted"
],
"callback": "string"
}
},
"CopyContainerInputVM": {
"description": "An input for provisioning a copy container",
"required": [
"sourceResourceId",
"copyResourceMayContainPersonalData"
],
"type": "object",
"properties": {
"sourceResourceId": {
"format": "uuid",
"description": "GUID for source resource",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"groupId": {
"format": "uuid",
"description": "ID of the group that copy container will be included once it is created.",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"copyResourceShortName": {
"description": "5-32 character short name used to distinguish between storage containers. The name needs to be lowercase and alphanumeric. The full name of the container will comprise of this shortname plus a unique Guid genarated by the system. Note - storage containers can not be renamed",
"type": "string"
},
"copyResourceMayContainPersonalData": {
"description": "Indicates whether the user has accepted that the container will not contain personal data. Required to be true for a user to upload a container",
"type": "boolean"
},
"copyResourceTitle": {
"description": "A title of the container",
"type": "string"
},
"copyResourceDescription": {
"description": "A description of the container",
"type": "string"
},
"copyResourceIcon": {
"$ref": "#/definitions/Icon",
"description": "An icon of the container"
},
"copyResourceTags": {
"description": "List of container tags",
"type": "array",
"items": {
"$ref": "#/definitions/MetadataTag"
}
}
},
"example": {
"sourceResourceId": "00000000-0000-0000-0000-000000000000",
"groupId": "00000000-0000-0000-0000-000000000000",
"copyResourceShortName": "string",
"copyResourceMayContainPersonalData": true,
"copyResourceTitle": "string",
"copyResourceDescription": "string",
"copyResourceIcon": {
"id": "string",
"backgroundColor": "string"
},
"copyResourceTags": [
{
"title": "string",
"type": "userTag"
}
]
}
},
"JsonPatchDocument[ResourceMetadata]": {
"type": "object",
"properties": {
"operations": {
"type": "array",
"items": {
"$ref": "#/definitions/Operation[ResourceMetadata]"
},
"readOnly": true
}
},
"example": {
"operations": [
{
"value": {},
"path": "string",
"op": "string",
"from": "string"
}
]
}
},
"Operation[ResourceMetadata]": {
"type": "object",
"properties": {
"value": {
"type": "object"
},
"path": {
"type": "string"
},
"op": {
"type": "string"
},
"from": {
"type": "string"
}
}
},
"Resource": {
"type": "object",
"properties": {
"id": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"reference": {
"type": "string"
},
"url": {
"type": "string"
},
"lastModifiedUTC": {
"format": "date-time",
"type": "string"
},
"creationDateTimeUTC": {
"format": "date-time",
"type": "string"
},
"ownerId": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"accessLevel": {
"enum": [
"owner",
"dataSteward",
"consumer"
],
"type": "string"
},
"region": {
"type": "string"
},
"keyStatus": {
"enum": [
"noKeys",
"expired",
"available",
"active"
],
"type": "string"
},
"mayContainPersonalData": {
"enum": [
"unknown",
"true",
"false"
],
"type": "string"
},
"metadata": {
"$ref": "#/definitions/ResourceMetadata"
}
}
},
"ResourceMetadata": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"icon": {
"$ref": "#/definitions/Icon"
},
"tags": {
"type": "array",
"items": {
"$ref": "#/definitions/Tag"
}
}
}
},
"Tag": {
"type": "object",
"properties": {
"id": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"title": {
"type": "string"
},
"type": {
"enum": [
"userTag",
"systemTag"
],
"type": "string"
}
}
},
"StorageRegion": {
"type": "object",
"properties": {
"shortName": {
"type": "string"
},
"fullName": {
"type": "string"
},
"location": {
"type": "string"
},
"azureName": {
"type": "string"
},
"displayName": {
"type": "string"
},
"groupName": {
"type": "string"
}
}
},
"Api1ContainerPost202ApplicationJsonResponse": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"Api1ContainerPost202TextJsonResponse": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"Api1ContainerPost202ApplicationXmlResponse": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"Api1ContainerPost202TextXmlResponse": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"Api1ContainerCopycontainerPost202ApplicationJsonResponse": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"Api1ContainerCopycontainerPost202TextJsonResponse": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"Api1ContainerCopycontainerPost202ApplicationXmlResponse": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"Api1ContainerCopycontainerPost202TextXmlResponse": {
"format": "uuid",
"type": "string",
"example": "00000000-0000-0000-0000-000000000000"
},
"StorageRegionArray": {
"type": "array",
"items": {
"$ref": "#/definitions/StorageRegion"
}
}
},
"tags": []
}