# Landing

## GET /api/v1/workspaces/{workspace}/landing

Read the workspace landing page

**Auth:** bearerAuth

:::codesamples Code examples

```bash:curl
curl -X GET "https://contextowl.co/api/v1/api/v1/workspaces/string/landing" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <token>"
```

```java:Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
  public static void main(String[] args) throws Exception {
    var client = HttpClient.newHttpClient();
    var request = HttpRequest.newBuilder()
        .uri(URI.create("https://contextowl.co/api/v1/api/v1/workspaces/string/landing"))
        .header("Accept", "application/json")
        .header("Authorization", "Bearer <token>")
        .method("GET", HttpRequest.BodyPublishers.noBody())
        .build();

    var response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println(response.statusCode());
    System.out.println(response.body());
  }
}
```

```python:Python
import urllib.request

url = "https://contextowl.co/api/v1/api/v1/workspaces/string/landing"
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer <token>",
}
data = None
req = urllib.request.Request(url, data=data, headers=headers, method="GET")
with urllib.request.urlopen(req) as res:
    print(res.status)
    print(res.read().decode())
```

```typescript:TypeScript
const response = await fetch("https://contextowl.co/api/v1/api/v1/workspaces/string/landing", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer <token>",
  }
});

console.log(response.status);
console.log(await response.json());
```

```go:Go
package main

import (
	"fmt"
	"io"
	"net/http"
	"time"
)

func main() {
	req, err := http.NewRequest("GET", "https://contextowl.co/api/v1/api/v1/workspaces/string/landing", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("Accept", "application/json")
	req.Header.Set("Authorization", "Bearer <token>")
	client := &http.Client{Timeout: 30 * time.Second}
	res, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	bodyBytes, err := io.ReadAll(io.LimitReader(res.Body, 10<<20))
	if err != nil {
		panic(err)
	}
	fmt.Println(res.StatusCode)
	fmt.Println(string(bodyBytes))
}
```

```rust:Rust
// cargo add reqwest --features blocking
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = reqwest::blocking::Client::new();
    let response = client.request(reqwest::Method::GET, "https://contextowl.co/api/v1/api/v1/workspaces/string/landing")
        .header("Accept", "application/json")
        .header("Authorization", "Bearer <token>")
        .send()?;

    println!("{}", response.status());
    println!("{}", response.text()?);
    Ok(())
}
```

:::

:::details open Parameters

| NAME | IN | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- | --- |
| `workspace` | path | string | yes | Workspace id, or - for the key's bound workspace |

:::

:::details open Responses

#### 200

Success

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `categories` | array items: LandingCategory object | yes | - |
| `footerColumns` | array items: FooterColumn object | yes | - |
| `hero` | LandingHero object | yes | - |
| `layout` | string | yes | - |
| `popular` | array items: LandingPopular object | yes | - |
| `popularSearches` | array items: string | yes | - |

```json
{
  "categories": [
    {
      "count": "string",
      "desc": "string",
      "glyph": "string",
      "id": "string",
      "image": "string",
      "title": "string"
    }
  ],
  "footerColumns": [
    {
      "heading": "string",
      "links": [
        {
          "label": "string",
          "url": "string"
        }
      ]
    }
  ],
  "hero": {
    "catLabel": "string",
    "footerLeft": "string",
    "footerRight": "string",
    "image": "string",
    "kicker": "string",
    "popLabel": "string",
    "searchPlaceholder": "string",
    "subtitle": "string",
    "title": "string"
  },
  "layout": "string",
  "popular": [
    {
      "id": "string",
      "section": "string",
      "title": "string"
    }
  ],
  "popularSearches": [
    "string"
  ]
}
```

#### 400

Bad request

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 401

Unauthorized

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 403

Forbidden

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 404

Not found

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 429

Rate limited

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

:::

## PUT /api/v1/workspaces/{workspace}/landing

Write the workspace landing page directly

**Auth:** bearerAuth

:::codesamples Code examples

```bash:curl
curl -X PUT "https://contextowl.co/api/v1/api/v1/workspaces/string/landing" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  --data '{
  "categories": [
    {
      "count": "string",
      "desc": "string",
      "glyph": "string",
      "id": "string",
      "image": "string",
      "title": "string"
    }
  ],
  "footerColumns": [
    {
      "heading": "string",
      "links": [
        {
          "label": "string",
          "url": "string"
        }
      ]
    }
  ],
  "hero": {
    "catLabel": "string",
    "footerLeft": "string",
    "footerRight": "string",
    "image": "string",
    "kicker": "string",
    "popLabel": "string",
    "searchPlaceholder": "string",
    "subtitle": "string",
    "title": "string"
  },
  "layout": "string",
  "popular": [
    {
      "id": "string",
      "section": "string",
      "title": "string"
    }
  ],
  "popularSearches": [
    "string"
  ]
}'
```

```java:Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
  public static void main(String[] args) throws Exception {
    var client = HttpClient.newHttpClient();
    var request = HttpRequest.newBuilder()
        .uri(URI.create("https://contextowl.co/api/v1/api/v1/workspaces/string/landing"))
        .header("Accept", "application/json")
        .header("Authorization", "Bearer <token>")
        .header("Content-Type", "application/json")
        .method("PUT", HttpRequest.BodyPublishers.ofString("{\n  \"categories\": [\n    {\n      \"count\": \"string\",\n      \"desc\": \"string\",\n      \"glyph\": \"string\",\n      \"id\": \"string\",\n      \"image\": \"string\",\n      \"title\": \"string\"\n    }\n  ],\n  \"footerColumns\": [\n    {\n      \"heading\": \"string\",\n      \"links\": [\n        {\n          \"label\": \"string\",\n          \"url\": \"string\"\n        }\n      ]\n    }\n  ],\n  \"hero\": {\n    \"catLabel\": \"string\",\n    \"footerLeft\": \"string\",\n    \"footerRight\": \"string\",\n    \"image\": \"string\",\n    \"kicker\": \"string\",\n    \"popLabel\": \"string\",\n    \"searchPlaceholder\": \"string\",\n    \"subtitle\": \"string\",\n    \"title\": \"string\"\n  },\n  \"layout\": \"string\",\n  \"popular\": [\n    {\n      \"id\": \"string\",\n      \"section\": \"string\",\n      \"title\": \"string\"\n    }\n  ],\n  \"popularSearches\": [\n    \"string\"\n  ]\n}"))
        .build();

    var response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println(response.statusCode());
    System.out.println(response.body());
  }
}
```

```python:Python
import urllib.request

url = "https://contextowl.co/api/v1/api/v1/workspaces/string/landing"
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json",
}
data = "{\n  \"categories\": [\n    {\n      \"count\": \"string\",\n      \"desc\": \"string\",\n      \"glyph\": \"string\",\n      \"id\": \"string\",\n      \"image\": \"string\",\n      \"title\": \"string\"\n    }\n  ],\n  \"footerColumns\": [\n    {\n      \"heading\": \"string\",\n      \"links\": [\n        {\n          \"label\": \"string\",\n          \"url\": \"string\"\n        }\n      ]\n    }\n  ],\n  \"hero\": {\n    \"catLabel\": \"string\",\n    \"footerLeft\": \"string\",\n    \"footerRight\": \"string\",\n    \"image\": \"string\",\n    \"kicker\": \"string\",\n    \"popLabel\": \"string\",\n    \"searchPlaceholder\": \"string\",\n    \"subtitle\": \"string\",\n    \"title\": \"string\"\n  },\n  \"layout\": \"string\",\n  \"popular\": [\n    {\n      \"id\": \"string\",\n      \"section\": \"string\",\n      \"title\": \"string\"\n    }\n  ],\n  \"popularSearches\": [\n    \"string\"\n  ]\n}".encode("utf-8")
req = urllib.request.Request(url, data=data, headers=headers, method="PUT")
with urllib.request.urlopen(req) as res:
    print(res.status)
    print(res.read().decode())
```

```typescript:TypeScript
const response = await fetch("https://contextowl.co/api/v1/api/v1/workspaces/string/landing", {
  method: "PUT",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "categories": [
      {
        "count": "string",
        "desc": "string",
        "glyph": "string",
        "id": "string",
        "image": "string",
        "title": "string"
      }
    ],
    "footerColumns": [
      {
        "heading": "string",
        "links": [
          {
            "label": "string",
            "url": "string"
          }
        ]
      }
    ],
    "hero": {
      "catLabel": "string",
      "footerLeft": "string",
      "footerRight": "string",
      "image": "string",
      "kicker": "string",
      "popLabel": "string",
      "searchPlaceholder": "string",
      "subtitle": "string",
      "title": "string"
    },
    "layout": "string",
    "popular": [
      {
        "id": "string",
        "section": "string",
        "title": "string"
      }
    ],
    "popularSearches": [
      "string"
    ]
  })
});

console.log(response.status);
console.log(await response.json());
```

```go:Go
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
	"time"
)

func main() {
	body := strings.NewReader(`{
  "categories": [
    {
      "count": "string",
      "desc": "string",
      "glyph": "string",
      "id": "string",
      "image": "string",
      "title": "string"
    }
  ],
  "footerColumns": [
    {
      "heading": "string",
      "links": [
        {
          "label": "string",
          "url": "string"
        }
      ]
    }
  ],
  "hero": {
    "catLabel": "string",
    "footerLeft": "string",
    "footerRight": "string",
    "image": "string",
    "kicker": "string",
    "popLabel": "string",
    "searchPlaceholder": "string",
    "subtitle": "string",
    "title": "string"
  },
  "layout": "string",
  "popular": [
    {
      "id": "string",
      "section": "string",
      "title": "string"
    }
  ],
  "popularSearches": [
    "string"
  ]
}`)
	req, err := http.NewRequest("PUT", "https://contextowl.co/api/v1/api/v1/workspaces/string/landing", body)
	if err != nil {
		panic(err)
	}
	req.Header.Set("Accept", "application/json")
	req.Header.Set("Authorization", "Bearer <token>")
	req.Header.Set("Content-Type", "application/json")
	client := &http.Client{Timeout: 30 * time.Second}
	res, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	bodyBytes, err := io.ReadAll(io.LimitReader(res.Body, 10<<20))
	if err != nil {
		panic(err)
	}
	fmt.Println(res.StatusCode)
	fmt.Println(string(bodyBytes))
}
```

```rust:Rust
// cargo add reqwest --features blocking
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = reqwest::blocking::Client::new();
    let response = client.request(reqwest::Method::PUT, "https://contextowl.co/api/v1/api/v1/workspaces/string/landing")
        .header("Accept", "application/json")
        .header("Authorization", "Bearer <token>")
        .header("Content-Type", "application/json")
        .body("{\n  \"categories\": [\n    {\n      \"count\": \"string\",\n      \"desc\": \"string\",\n      \"glyph\": \"string\",\n      \"id\": \"string\",\n      \"image\": \"string\",\n      \"title\": \"string\"\n    }\n  ],\n  \"footerColumns\": [\n    {\n      \"heading\": \"string\",\n      \"links\": [\n        {\n          \"label\": \"string\",\n          \"url\": \"string\"\n        }\n      ]\n    }\n  ],\n  \"hero\": {\n    \"catLabel\": \"string\",\n    \"footerLeft\": \"string\",\n    \"footerRight\": \"string\",\n    \"image\": \"string\",\n    \"kicker\": \"string\",\n    \"popLabel\": \"string\",\n    \"searchPlaceholder\": \"string\",\n    \"subtitle\": \"string\",\n    \"title\": \"string\"\n  },\n  \"layout\": \"string\",\n  \"popular\": [\n    {\n      \"id\": \"string\",\n      \"section\": \"string\",\n      \"title\": \"string\"\n    }\n  ],\n  \"popularSearches\": [\n    \"string\"\n  ]\n}")
        .send()?;

    println!("{}", response.status());
    println!("{}", response.text()?);
    Ok(())
}
```

:::

:::details open Parameters

| NAME | IN | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- | --- |
| `workspace` | path | string | yes | Workspace id, or - for the key's bound workspace |

:::

:::details open Request Body

Required: yes

#### application/json

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `categories` | array items: LandingCategory object | yes | - |
| `footerColumns` | array items: FooterColumn object | yes | - |
| `hero` | LandingHero object | yes | - |
| `layout` | string | yes | - |
| `popular` | array items: LandingPopular object | yes | - |
| `popularSearches` | array items: string | yes | - |

```json
{
  "categories": [
    {
      "count": "string",
      "desc": "string",
      "glyph": "string",
      "id": "string",
      "image": "string",
      "title": "string"
    }
  ],
  "footerColumns": [
    {
      "heading": "string",
      "links": [
        {
          "label": "string",
          "url": "string"
        }
      ]
    }
  ],
  "hero": {
    "catLabel": "string",
    "footerLeft": "string",
    "footerRight": "string",
    "image": "string",
    "kicker": "string",
    "popLabel": "string",
    "searchPlaceholder": "string",
    "subtitle": "string",
    "title": "string"
  },
  "layout": "string",
  "popular": [
    {
      "id": "string",
      "section": "string",
      "title": "string"
    }
  ],
  "popularSearches": [
    "string"
  ]
}
```

:::

:::details open Responses

#### 200

Success

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `categories` | array items: LandingCategory object | yes | - |
| `footerColumns` | array items: FooterColumn object | yes | - |
| `hero` | LandingHero object | yes | - |
| `layout` | string | yes | - |
| `popular` | array items: LandingPopular object | yes | - |
| `popularSearches` | array items: string | yes | - |

```json
{
  "categories": [
    {
      "count": "string",
      "desc": "string",
      "glyph": "string",
      "id": "string",
      "image": "string",
      "title": "string"
    }
  ],
  "footerColumns": [
    {
      "heading": "string",
      "links": [
        {
          "label": "string",
          "url": "string"
        }
      ]
    }
  ],
  "hero": {
    "catLabel": "string",
    "footerLeft": "string",
    "footerRight": "string",
    "image": "string",
    "kicker": "string",
    "popLabel": "string",
    "searchPlaceholder": "string",
    "subtitle": "string",
    "title": "string"
  },
  "layout": "string",
  "popular": [
    {
      "id": "string",
      "section": "string",
      "title": "string"
    }
  ],
  "popularSearches": [
    "string"
  ]
}
```

#### 400

Bad request

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 401

Unauthorized

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 403

Forbidden

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 404

Not found

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 429

Rate limited

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

:::

## GET /api/v1/workspaces/{workspace}/landing/autofill

Generate a landing draft (not saved)

**Auth:** bearerAuth

:::codesamples Code examples

```bash:curl
curl -X GET "https://contextowl.co/api/v1/api/v1/workspaces/string/landing/autofill" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <token>"
```

```java:Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
  public static void main(String[] args) throws Exception {
    var client = HttpClient.newHttpClient();
    var request = HttpRequest.newBuilder()
        .uri(URI.create("https://contextowl.co/api/v1/api/v1/workspaces/string/landing/autofill"))
        .header("Accept", "application/json")
        .header("Authorization", "Bearer <token>")
        .method("GET", HttpRequest.BodyPublishers.noBody())
        .build();

    var response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println(response.statusCode());
    System.out.println(response.body());
  }
}
```

```python:Python
import urllib.request

url = "https://contextowl.co/api/v1/api/v1/workspaces/string/landing/autofill"
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer <token>",
}
data = None
req = urllib.request.Request(url, data=data, headers=headers, method="GET")
with urllib.request.urlopen(req) as res:
    print(res.status)
    print(res.read().decode())
```

```typescript:TypeScript
const response = await fetch("https://contextowl.co/api/v1/api/v1/workspaces/string/landing/autofill", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer <token>",
  }
});

console.log(response.status);
console.log(await response.json());
```

```go:Go
package main

import (
	"fmt"
	"io"
	"net/http"
	"time"
)

func main() {
	req, err := http.NewRequest("GET", "https://contextowl.co/api/v1/api/v1/workspaces/string/landing/autofill", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("Accept", "application/json")
	req.Header.Set("Authorization", "Bearer <token>")
	client := &http.Client{Timeout: 30 * time.Second}
	res, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	bodyBytes, err := io.ReadAll(io.LimitReader(res.Body, 10<<20))
	if err != nil {
		panic(err)
	}
	fmt.Println(res.StatusCode)
	fmt.Println(string(bodyBytes))
}
```

```rust:Rust
// cargo add reqwest --features blocking
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = reqwest::blocking::Client::new();
    let response = client.request(reqwest::Method::GET, "https://contextowl.co/api/v1/api/v1/workspaces/string/landing/autofill")
        .header("Accept", "application/json")
        .header("Authorization", "Bearer <token>")
        .send()?;

    println!("{}", response.status());
    println!("{}", response.text()?);
    Ok(())
}
```

:::

:::details open Parameters

| NAME | IN | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- | --- |
| `workspace` | path | string | yes | Workspace id, or - for the key's bound workspace |

:::

:::details open Responses

#### 200

Success

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `categories` | array items: LandingCategory object | yes | - |
| `footerColumns` | array items: FooterColumn object | yes | - |
| `hero` | LandingHero object | yes | - |
| `layout` | string | yes | - |
| `popular` | array items: LandingPopular object | yes | - |
| `popularSearches` | array items: string | yes | - |

```json
{
  "categories": [
    {
      "count": "string",
      "desc": "string",
      "glyph": "string",
      "id": "string",
      "image": "string",
      "title": "string"
    }
  ],
  "footerColumns": [
    {
      "heading": "string",
      "links": [
        {
          "label": "string",
          "url": "string"
        }
      ]
    }
  ],
  "hero": {
    "catLabel": "string",
    "footerLeft": "string",
    "footerRight": "string",
    "image": "string",
    "kicker": "string",
    "popLabel": "string",
    "searchPlaceholder": "string",
    "subtitle": "string",
    "title": "string"
  },
  "layout": "string",
  "popular": [
    {
      "id": "string",
      "section": "string",
      "title": "string"
    }
  ],
  "popularSearches": [
    "string"
  ]
}
```

#### 400

Bad request

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 401

Unauthorized

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 403

Forbidden

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 404

Not found

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 429

Rate limited

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

:::

## POST /api/v1/workspaces/{workspace}/landing/proposals

Propose a landing change for editor review

**Auth:** bearerAuth

:::codesamples Code examples

```bash:curl
curl -X POST "https://contextowl.co/api/v1/api/v1/workspaces/string/landing/proposals" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  --data '{
  "landing": {
    "categories": [
      {
        "count": "string",
        "desc": "string",
        "glyph": "string",
        "id": "string",
        "image": "string",
        "title": "string"
      }
    ],
    "footerColumns": [
      {
        "heading": "string",
        "links": [
          {
            "label": "string",
            "url": "string"
          }
        ]
      }
    ],
    "hero": {
      "catLabel": "string",
      "footerLeft": "string",
      "footerRight": "string",
      "image": "string",
      "kicker": "string",
      "popLabel": "string",
      "searchPlaceholder": "string",
      "subtitle": "string",
      "title": "string"
    },
    "layout": "string",
    "popular": [
      {
        "id": "string",
        "section": "string",
        "title": "string"
      }
    ],
    "popularSearches": [
      "string"
    ]
  },
  "note": "string"
}'
```

```java:Java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
  public static void main(String[] args) throws Exception {
    var client = HttpClient.newHttpClient();
    var request = HttpRequest.newBuilder()
        .uri(URI.create("https://contextowl.co/api/v1/api/v1/workspaces/string/landing/proposals"))
        .header("Accept", "application/json")
        .header("Authorization", "Bearer <token>")
        .header("Content-Type", "application/json")
        .method("POST", HttpRequest.BodyPublishers.ofString("{\n  \"landing\": {\n    \"categories\": [\n      {\n        \"count\": \"string\",\n        \"desc\": \"string\",\n        \"glyph\": \"string\",\n        \"id\": \"string\",\n        \"image\": \"string\",\n        \"title\": \"string\"\n      }\n    ],\n    \"footerColumns\": [\n      {\n        \"heading\": \"string\",\n        \"links\": [\n          {\n            \"label\": \"string\",\n            \"url\": \"string\"\n          }\n        ]\n      }\n    ],\n    \"hero\": {\n      \"catLabel\": \"string\",\n      \"footerLeft\": \"string\",\n      \"footerRight\": \"string\",\n      \"image\": \"string\",\n      \"kicker\": \"string\",\n      \"popLabel\": \"string\",\n      \"searchPlaceholder\": \"string\",\n      \"subtitle\": \"string\",\n      \"title\": \"string\"\n    },\n    \"layout\": \"string\",\n    \"popular\": [\n      {\n        \"id\": \"string\",\n        \"section\": \"string\",\n        \"title\": \"string\"\n      }\n    ],\n    \"popularSearches\": [\n      \"string\"\n    ]\n  },\n  \"note\": \"string\"\n}"))
        .build();

    var response = client.send(request, HttpResponse.BodyHandlers.ofString());
    System.out.println(response.statusCode());
    System.out.println(response.body());
  }
}
```

```python:Python
import urllib.request

url = "https://contextowl.co/api/v1/api/v1/workspaces/string/landing/proposals"
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json",
}
data = "{\n  \"landing\": {\n    \"categories\": [\n      {\n        \"count\": \"string\",\n        \"desc\": \"string\",\n        \"glyph\": \"string\",\n        \"id\": \"string\",\n        \"image\": \"string\",\n        \"title\": \"string\"\n      }\n    ],\n    \"footerColumns\": [\n      {\n        \"heading\": \"string\",\n        \"links\": [\n          {\n            \"label\": \"string\",\n            \"url\": \"string\"\n          }\n        ]\n      }\n    ],\n    \"hero\": {\n      \"catLabel\": \"string\",\n      \"footerLeft\": \"string\",\n      \"footerRight\": \"string\",\n      \"image\": \"string\",\n      \"kicker\": \"string\",\n      \"popLabel\": \"string\",\n      \"searchPlaceholder\": \"string\",\n      \"subtitle\": \"string\",\n      \"title\": \"string\"\n    },\n    \"layout\": \"string\",\n    \"popular\": [\n      {\n        \"id\": \"string\",\n        \"section\": \"string\",\n        \"title\": \"string\"\n      }\n    ],\n    \"popularSearches\": [\n      \"string\"\n    ]\n  },\n  \"note\": \"string\"\n}".encode("utf-8")
req = urllib.request.Request(url, data=data, headers=headers, method="POST")
with urllib.request.urlopen(req) as res:
    print(res.status)
    print(res.read().decode())
```

```typescript:TypeScript
const response = await fetch("https://contextowl.co/api/v1/api/v1/workspaces/string/landing/proposals", {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "landing": {
      "categories": [
        {
          "count": "string",
          "desc": "string",
          "glyph": "string",
          "id": "string",
          "image": "string",
          "title": "string"
        }
      ],
      "footerColumns": [
        {
          "heading": "string",
          "links": [
            {
              "label": "string",
              "url": "string"
            }
          ]
        }
      ],
      "hero": {
        "catLabel": "string",
        "footerLeft": "string",
        "footerRight": "string",
        "image": "string",
        "kicker": "string",
        "popLabel": "string",
        "searchPlaceholder": "string",
        "subtitle": "string",
        "title": "string"
      },
      "layout": "string",
      "popular": [
        {
          "id": "string",
          "section": "string",
          "title": "string"
        }
      ],
      "popularSearches": [
        "string"
      ]
    },
    "note": "string"
  })
});

console.log(response.status);
console.log(await response.json());
```

```go:Go
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
	"time"
)

func main() {
	body := strings.NewReader(`{
  "landing": {
    "categories": [
      {
        "count": "string",
        "desc": "string",
        "glyph": "string",
        "id": "string",
        "image": "string",
        "title": "string"
      }
    ],
    "footerColumns": [
      {
        "heading": "string",
        "links": [
          {
            "label": "string",
            "url": "string"
          }
        ]
      }
    ],
    "hero": {
      "catLabel": "string",
      "footerLeft": "string",
      "footerRight": "string",
      "image": "string",
      "kicker": "string",
      "popLabel": "string",
      "searchPlaceholder": "string",
      "subtitle": "string",
      "title": "string"
    },
    "layout": "string",
    "popular": [
      {
        "id": "string",
        "section": "string",
        "title": "string"
      }
    ],
    "popularSearches": [
      "string"
    ]
  },
  "note": "string"
}`)
	req, err := http.NewRequest("POST", "https://contextowl.co/api/v1/api/v1/workspaces/string/landing/proposals", body)
	if err != nil {
		panic(err)
	}
	req.Header.Set("Accept", "application/json")
	req.Header.Set("Authorization", "Bearer <token>")
	req.Header.Set("Content-Type", "application/json")
	client := &http.Client{Timeout: 30 * time.Second}
	res, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	bodyBytes, err := io.ReadAll(io.LimitReader(res.Body, 10<<20))
	if err != nil {
		panic(err)
	}
	fmt.Println(res.StatusCode)
	fmt.Println(string(bodyBytes))
}
```

```rust:Rust
// cargo add reqwest --features blocking
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = reqwest::blocking::Client::new();
    let response = client.request(reqwest::Method::POST, "https://contextowl.co/api/v1/api/v1/workspaces/string/landing/proposals")
        .header("Accept", "application/json")
        .header("Authorization", "Bearer <token>")
        .header("Content-Type", "application/json")
        .body("{\n  \"landing\": {\n    \"categories\": [\n      {\n        \"count\": \"string\",\n        \"desc\": \"string\",\n        \"glyph\": \"string\",\n        \"id\": \"string\",\n        \"image\": \"string\",\n        \"title\": \"string\"\n      }\n    ],\n    \"footerColumns\": [\n      {\n        \"heading\": \"string\",\n        \"links\": [\n          {\n            \"label\": \"string\",\n            \"url\": \"string\"\n          }\n        ]\n      }\n    ],\n    \"hero\": {\n      \"catLabel\": \"string\",\n      \"footerLeft\": \"string\",\n      \"footerRight\": \"string\",\n      \"image\": \"string\",\n      \"kicker\": \"string\",\n      \"popLabel\": \"string\",\n      \"searchPlaceholder\": \"string\",\n      \"subtitle\": \"string\",\n      \"title\": \"string\"\n    },\n    \"layout\": \"string\",\n    \"popular\": [\n      {\n        \"id\": \"string\",\n        \"section\": \"string\",\n        \"title\": \"string\"\n      }\n    ],\n    \"popularSearches\": [\n      \"string\"\n    ]\n  },\n  \"note\": \"string\"\n}")
        .send()?;

    println!("{}", response.status());
    println!("{}", response.text()?);
    Ok(())
}
```

:::

:::details open Parameters

| NAME | IN | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- | --- |
| `workspace` | path | string | yes | Workspace id, or - for the key's bound workspace |

:::

:::details open Request Body

Required: yes

#### application/json

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `landing` | Landing object | yes | - |
| `note` | string | yes | - |

```json
{
  "landing": {
    "categories": [
      {
        "count": "string",
        "desc": "string",
        "glyph": "string",
        "id": "string",
        "image": "string",
        "title": "string"
      }
    ],
    "footerColumns": [
      {
        "heading": "string",
        "links": [
          {
            "label": "string",
            "url": "string"
          }
        ]
      }
    ],
    "hero": {
      "catLabel": "string",
      "footerLeft": "string",
      "footerRight": "string",
      "image": "string",
      "kicker": "string",
      "popLabel": "string",
      "searchPlaceholder": "string",
      "subtitle": "string",
      "title": "string"
    },
    "layout": "string",
    "popular": [
      {
        "id": "string",
        "section": "string",
        "title": "string"
      }
    ],
    "popularSearches": [
      "string"
    ]
  },
  "note": "string"
}
```

:::

:::details open Responses

#### 201

Success

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `id` | integer | yes | - |
| `status` | string | yes | - |

```json
{
  "id": 0,
  "status": "string"
}
```

#### 400

Bad request

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 401

Unauthorized

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 403

Forbidden

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 404

Not found

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

#### 429

Rate limited

**Content-Type:** `application/json`

| FIELD | TYPE | REQUIRED | DESCRIPTION |
| --- | --- | --- | --- |
| `error` | object | yes | - |

```json
{
  "error": {
    "code": "string",
    "details": null,
    "message": "string",
    "status": 0
  }
}
```

:::
