{
	"swagger": "2.0",
	"basePath": "/onboarding",
	"paths": {
		"/components": {
			"post": {
				"responses": {
					"500": {
						"description": "Internal Server Error"
					},
					"409": {
						"description": "Component already exists",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"400": {
						"description": "Bad Request",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"200": {
						"description": "Success",
						"schema": {
							"$ref": "#/definitions/Component post"
						}
					}
				},
				"description": "Add a Component to the Catalog",
				"operationId": "post_component",
				"parameters": [{
					"name": "payload",
					"required": true,
					"in": "body",
					"schema": {
						"$ref": "#/definitions/Component Spec"
					}
				}, {
					"name": "X-Fields",
					"in": "header",
					"type": "string",
					"format": "mask",
					"description": "An optional fields mask to support partial object fetching - https://flask-restplus.readthedocs.io/en/stable/mask.html"
				}],
				"tags": ["onboarding"]
			},
			"get": {
				"responses": {
					"500": {
						"description": "Internal Server Error"
					},
					"200": {
						"description": "Success",
						"schema": {
							"$ref": "#/definitions/Component List"
						}
					}
				},
				"description": "Get list of Components in the catalog",
				"operationId": "get_components",
				"parameters": [{
					"name": "name",
					"in": "query",
					"type": "string",
					"description": "Name of component to filter for"
				}, {
					"name": "version",
					"in": "query",
					"type": "string",
					"description": "Version of component to filter for"
				}, {
					"name": "X-Fields",
					"in": "header",
					"type": "string",
					"format": "mask",
					"description": "An optional fields mask to support partial object fetching - https://flask-restplus.readthedocs.io/en/stable/mask.html"
				}],
				"tags": ["onboarding"]
			}
		},
		"/components/{component_id}": {
			"parameters": [{
				"name": "component_id",
				"in": "path",
				"required": true,
				"type": "string"
			}],
			"put": {
				"responses": {
					"500": {
						"description": "Internal Server Error"
					},
					"404": {
						"description": "Component not found in Catalog",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"400": {
						"description": "Bad Request",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"200": {
						"description": "Success, Component replaced"
					}
				},
				"description": "Replace a Component Spec in the Catalog",
				"operationId": "put_component",
				"parameters": [{
					"name": "payload",
					"required": true,
					"in": "body",
					"schema": {
						"$ref": "#/definitions/Component Spec"
					}
				}],
				"tags": ["onboarding"]
			},
			"get": {
				"responses": {
					"500": {
						"description": "Internal Server Error"
					},
					"404": {
						"description": "Component not found in Catalog",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"200": {
						"description": "Success",
						"schema": {
							"$ref": "#/definitions/component fields by id"
						}
					}
				},
				"description": "Get a Component",
				"operationId": "get_component",
				"parameters": [{
					"name": "X-Fields",
					"in": "header",
					"type": "string",
					"format": "mask",
					"description": "An optional fields mask to support partial object fetching - https://flask-restplus.readthedocs.io/en/stable/mask.html"
				}],
				"tags": ["onboarding"]
			},
			"patch": {
				"responses": {
					"500": {
						"description": "Internal Server Error"
					},
					"404": {
						"description": "Component not found in Catalog",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"403": {
						"description": "Forbidden Request",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"400": {
						"description": "Bad Request",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"200": {
						"description": "Success, Component status updated"
					}
				},
				"description": "Update a Component's status in the Catalog",
				"operationId": "patch_component",
				"parameters": [{
					"name": "payload",
					"required": true,
					"in": "body",
					"schema": {
						"$ref": "#/definitions/Patch Spec"
					}
				}],
				"tags": ["onboarding"]
			}
		},
		"/dataformats": {
			"post": {
				"responses": {
					"500": {
						"description": "Internal Server Error"
					},
					"409": {
						"description": "Data Format already exists",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"400": {
						"description": "Bad Request",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"200": {
						"description": "Success",
						"schema": {
							"$ref": "#/definitions/Data Format post"
						}
					}
				},
				"description": "Add a Data Format to the Catalog",
				"operationId": "post_dataformat",
				"parameters": [{
					"name": "payload",
					"required": true,
					"in": "body",
					"schema": {
						"$ref": "#/definitions/Data Format Spec"
					}
				}, {
					"name": "X-Fields",
					"in": "header",
					"type": "string",
					"format": "mask",
					"description": "An optional fields mask to support partial object fetching - https://flask-restplus.readthedocs.io/en/stable/mask.html"
				}],
				"tags": ["onboarding"]
			},
			"get": {
				"responses": {
					"500": {
						"description": "Internal Server Error"
					},
					"200": {
						"description": "Success",
						"schema": {
							"$ref": "#/definitions/Data Format List"
						}
					}
				},
				"description": "Get list of Data Formats in the catalog",
				"operationId": "get_dataformats",
				"parameters": [{
					"name": "X-Fields",
					"in": "header",
					"type": "string",
					"format": "mask",
					"description": "An optional fields mask to support partial object fetching - https://flask-restplus.readthedocs.io/en/stable/mask.html"
				}],
				"tags": ["onboarding"]
			}
		},
		"/dataformats/{dataformat_id}": {
			"parameters": [{
				"name": "dataformat_id",
				"in": "path",
				"required": true,
				"type": "string"
			}],
			"put": {
				"responses": {
					"500": {
						"description": "Internal Server Error"
					},
					"404": {
						"description": "Data Format not found in Catalog",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"400": {
						"description": "Bad Request",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"200": {
						"description": "Success, Data Format added"
					}
				},
				"description": "Replace a Data Format Spec in the Catalog",
				"operationId": "put_dataformat",
				"parameters": [{
					"name": "payload",
					"required": true,
					"in": "body",
					"schema": {
						"$ref": "#/definitions/Data Format Spec"
					}
				}],
				"tags": ["onboarding"]
			},
			"get": {
				"responses": {
					"500": {
						"description": "Internal Server Error"
					},
					"404": {
						"description": "Data Format not found in Catalog",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"200": {
						"description": "Success",
						"schema": {
							"$ref": "#/definitions/dataformat fields by id"
						}
					}
				},
				"description": "Get a Data Format",
				"operationId": "get_dataformat",
				"parameters": [{
					"name": "X-Fields",
					"in": "header",
					"type": "string",
					"format": "mask",
					"description": "An optional fields mask to support partial object fetching - https://flask-restplus.readthedocs.io/en/stable/mask.html"
				}],
				"tags": ["onboarding"]
			},
			"patch": {
				"responses": {
					"500": {
						"description": "Internal Server Error"
					},
					"404": {
						"description": "Data Format not found in Catalog",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"403": {
						"description": "Forbidden Request",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"400": {
						"description": "Bad Request",
						"schema": {
							"$ref": "#/definitions/Error message"
						}
					},
					"200": {
						"description": "Success, Data Format status updated"
					}
				},
				"description": "Update a Data Format's status in the Catalog",
				"operationId": "patch_dataformat",
				"parameters": [{
					"name": "payload",
					"required": true,
					"in": "body",
					"schema": {
						"$ref": "#/definitions/Patch Spec"
					}
				}],
				"tags": ["onboarding"]
			}
		}
	},
	"info": {
		"title": "DCAE Onboarding HTTP API",
		"version": "2.12.0"
	},
	"produces": ["application/json"],
	"consumes": ["application/json"],
	"tags": [{
		"name": "onboarding",
		"description": "Default namespace"
	}],
	"definitions": {
		"Component Spec": {
			"properties": {
				"owner": {
					"type": "string"
				},
				"spec": {
					"type": "object",
					"description": "The Component Spec schema is here -> https://git.onap.org/dcaegen2/platform/cli/plain/component-json-schemas/component-specification/dcae-cli-v2/component-spec-schema.json"
				}
			}
		},
		"Error message": {
			"properties": {
				"message": {
					"type": "string",
					"description": ". . . . .Details about the unsuccessful API request"
				}
			},
			"type": "object"
		},
		"Component post": {
			"required": ["componentUrl"],
			"properties": {
				"componentUrl": {
					"type": "string",
					"description": ". . . . Url to the Component Specification"
				}
			},
			"type": "object"
		},
		"Component List": {
			"properties": {
				"components": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/component fields"
					}
				}
			},
			"type": "object"
		},
		"component fields": {
			"required": ["componentType", "componentUrl", "description", "id", "modified", "name", "owner", "status", "version", "whenAdded"],
			"properties": {
				"id": {
					"type": "string",
					"description": ". . . . ID of the component"
				},
				"name": {
					"type": "string",
					"description": ". . . . Name of the component"
				},
				"version": {
					"type": "string",
					"description": ". . . . Version of the component"
				},
				"owner": {
					"type": "string",
					"description": ". . . . ID of who added the component"
				},
				"whenAdded": {
					"type": "string",
					"format": "date-time",
					"description": ". . . . When component was added to the Catalog"
				},
				"modified": {
					"type": "string",
					"format": "date-time",
					"description": ". . . . When component was last modified"
				},
				"status": {
					"type": "string",
					"description": ". . . . Status of the component"
				},
				"description": {
					"type": "string",
					"description": ". . . . Description of the component"
				},
				"componentType": {
					"type": "string",
					"description": ". . . . only \"docker\""
				},
				"componentUrl": {
					"type": "string",
					"description": ". . . . Url to the Component Specification"
				}
			},
			"type": "object"
		},
		"Patch Spec": {
			"required": ["owner", "status"],
			"properties": {
				"owner": {
					"type": "string",
					"description": "User ID"
				},
				"status": {
					"type": "string",
					"description": ". . . . .[published] is the only status change supported right now",
					"example": "published",
					"enum": ["published", "revoked"]
				}
			},
			"type": "object"
		},
		"component fields by id": {
			"allOf": [{
				"$ref": "#/definitions/component fields"
			}, {
				"required": ["spec"],
				"properties": {
					"spec": {
						"type": "object",
						"description": "The Component Specification (json)"
					}
				},
				"type": "object"
			}]
		},
		"Data Format Spec": {
			"properties": {
				"owner": {
					"type": "string"
				},
				"spec": {
					"type": "object",
					"description": "The Data Format Spec schema is here -> https://git.onap.org/dcaegen2/platform/cli/plain/component-json-schemas/data-format/dcae-cli-v1/data-format-schema.json"
				}
			}
		},
		"Data Format post": {
			"required": ["dataFormatUrl"],
			"properties": {
				"dataFormatUrl": {
					"type": "string",
					"description": ". . . . Url to the Data Format Specification"
				}
			},
			"type": "object"
		},
		"Data Format List": {
			"properties": {
				"dataFormats": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/dataformat fields"
					}
				}
			},
			"type": "object"
		},
		"dataformat fields": {
			"required": ["dataFormatUrl", "description", "id", "modified", "name", "owner", "status", "version", "whenAdded"],
			"properties": {
				"id": {
					"type": "string",
					"description": ". . . . ID of the data format"
				},
				"name": {
					"type": "string",
					"description": ". . . . Name of the data format"
				},
				"version": {
					"type": "string",
					"description": ". . . . Version of the data format"
				},
				"owner": {
					"type": "string",
					"description": ". . . . ID of who added the data format"
				},
				"whenAdded": {
					"type": "string",
					"format": "date-time",
					"description": ". . . . When data format was added to the Catalog"
				},
				"modified": {
					"type": "string",
					"format": "date-time",
					"description": ". . . . When data format was last modified"
				},
				"status": {
					"type": "string",
					"description": ". . . . Status of the data format"
				},
				"description": {
					"type": "string",
					"description": ". . . . Description of the data format"
				},
				"dataFormatUrl": {
					"type": "string",
					"description": ". . . . Url to the Data Format Specification"
				}
			},
			"type": "object"
		},
		"dataformat fields by id": {
			"allOf": [{
				"$ref": "#/definitions/dataformat fields"
			}, {
				"required": ["spec"],
				"properties": {
					"spec": {
						"type": "object",
						"description": "The Data Format Specification (json)"
					}
				},
				"type": "object"
			}]
		}
	},
	"responses": {
		"ParseError": {
			"description": "When a mask can't be parsed"
		},
		"MaskError": {
			"description": "When any error occurs on mask"
		}
	}
}