{
  "openapi": "3.0.1",
  "info": {
    "title": "EPiServer.ContentApi.Docs",
    "version": "v3"
  },
  "paths": {
    "/api/episerver/v3.0/content/{contentIdentifier}": {
      "get": {
        "tags": [
          "Content"
        ],
        "summary": "Get content by given content reference or unique identifier and language.",
        "operationId": "Content_GetByContentIdentifier",
        "parameters": [
          {
            "name": "contentIdentifier",
            "in": "path",
            "description": "Content reference or unique identifier to retrieve data.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "Determines in which language the content should be retrieved. Example: 'en' or 'sv'. Does not support fallback.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "description": "List of properties needed to be expanded. The list is separated by comma",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "select",
            "in": "query",
            "description": "List of properties needed to be returned. The list is separated by comma. Default are all properties returned",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/content"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/episerver/v3.0/content/{contentIdentifier}/children": {
      "get": {
        "tags": [
          "Content"
        ],
        "summary": "Get the children of the content item by given content reference or unique identifier and language.",
        "operationId": "Content_GetChildren",
        "parameters": [
          {
            "name": "contentIdentifier",
            "in": "path",
            "description": "Parent's content reference or parent's unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "Determines in which language the content should be retrieved. Example: 'en' or 'sv'. Does not support fallback.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "description": "List of properties needed to be expanded. The list is separated by comma",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "select",
            "in": "query",
            "description": "List of properties needed to be returned. The list is separated by comma. Default are all properties returned",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "top",
            "in": "query",
            "description": "The max number of children to return.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "x-epi-continuation",
            "in": "header",
            "description": "The max number of children to return.",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/content"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/episerver/v3.0/content/{contentIdentifier}/ancestors": {
      "get": {
        "tags": [
          "Content"
        ],
        "summary": "Get the ancestors of the content item by given content reference or unique identifier and language.",
        "operationId": "Content_GetAncestors",
        "parameters": [
          {
            "name": "contentIdentifier",
            "in": "path",
            "description": "Content reference or unique identifier to retrieve parents.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "Determines in which language the content should be retrieved. Example: 'en' or 'sv'. Does not support fallback.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "description": "List of properties needed to be expanded. The list is separated by comma",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "select",
            "in": "query",
            "description": "List of properties needed to be returned. The list is separated by comma. Default are all properties returned",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/content"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/episerver/v3.0/content": {
      "get": {
        "tags": [
          "Content"
        ],
        "summary": "Get content by given content url or by list of GUID/Reference with given language",
        "operationId": "Content_QueryContent",
        "parameters": [
          {
            "name": "Accept-Language",
            "in": "header",
            "description": "Determines in which language the content should be retrieved. Example: 'en' or 'sv'. Does not support fallback.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ContentUrl",
            "in": "query",
            "description": "The absolute url to the content",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Guids",
            "in": "query",
            "description": "List of GUID separated by ','.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "References",
            "in": "query",
            "description": "List of ContentReference separated by ','.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Expand",
            "in": "query",
            "description": "List of properties needed to be expanded. The list is separated by comma.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Select",
            "in": "query",
            "description": "List of properties needed to be returned. The list is separated by comma. Default are all properties returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "MatchExact",
            "in": "query",
            "description": "Indicates if the specified 'contentUrl' should match url of the content exactly, that is no additional segments are allowed.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/content"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/episerver/v3.0/site": {
      "get": {
        "tags": [
          "Site"
        ],
        "summary": "Get a list of sites.",
        "operationId": "Site_List",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/siteDefinition"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/episerver/v3.0/site/{id}": {
      "get": {
        "tags": [
          "Site"
        ],
        "summary": "Gets the site with the provided identifier.",
        "operationId": "Site_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The identifier of the site.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/siteDefinition"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/problemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "content": {
        "type": "object",
        "properties": {
          "contentLink": {
            "$ref": "#/components/schemas/contentReference"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "$ref": "#/components/schemas/language"
          },
          "existingLanguages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/language"
            },
            "nullable": true
          },
          "masterLanguage": {
            "$ref": "#/components/schemas/language"
          },
          "contentType": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "parentLink": {
            "$ref": "#/components/schemas/contentReference"
          },
          "routeSegment": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "changed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "startPublish": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "stopPublish": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "saved": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "contentReference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "guidValue": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "providerName": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "$ref": "#/components/schemas/language"
          },
          "expanded": {
            "$ref": "#/components/schemas/content"
          }
        },
        "additionalProperties": false
      },
      "hostDefinition": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "$ref": "#/components/schemas/language"
          }
        },
        "additionalProperties": false
      },
      "language": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "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": { }
      },
      "siteDefinition": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "editLocation": {
            "type": "string",
            "nullable": true
          },
          "contentRoots": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/contentReference"
            },
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/siteDefinitionLanguage"
            },
            "nullable": true
          },
          "hosts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/hostDefinition"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "siteDefinitionLanguage": {
        "type": "object",
        "properties": {
          "isMasterLanguage": {
            "type": "boolean",
            "nullable": true
          },
          "urlSegment": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    }
  }
}