{
  "openapi": "3.0.3",
  "info": {
    "title": "Grayhat Public API",
    "version": "1.0.0",
    "description": "Sanitized public API surface for Grayhat company-site content, intended for human pages, crawlers, chatbots, and agents. Includes Grayhat blog APIs under /blog for the single public site domain."
  },
  "servers": [
    {
      "url": "/",
      "description": "Current Grayhat public site origin."
    }
  ],
  "paths": {
    "/api/openapi.json": {
      "get": {
        "operationId": "getPublicOpenApiDocument",
        "summary": "Get the public OpenAPI document",
        "description": "Returns the generated OpenAPI contract for Grayhat public company-site APIs.",
        "tags": [
          "Discovery"
        ],
        "responses": {
          "200": {
            "description": "Generated OpenAPI document.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/v1/team": {
      "get": {
        "operationId": "listPublicTeamMembers",
        "summary": "List public team members",
        "description": "Returns sanitized public team member records available for company-site display and agent reads.",
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Case-insensitive text search across implemented public fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "department",
            "in": "query",
            "description": "Filter by public department label.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "designation",
            "in": "query",
            "description": "Filter by public designation or role label.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public team member list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicTeamListResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/v1/team/{id}": {
      "get": {
        "operationId": "getPublicTeamMember",
        "summary": "Get a public team member",
        "description": "Returns one sanitized public team member record by stable public identifier.",
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Stable public team member identifier.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public team member.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicTeamMemberResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Team member not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/v1/clients": {
      "get": {
        "operationId": "listPublicClients",
        "summary": "List public clients",
        "description": "Returns sanitized public client records marked for company-site display.",
        "tags": [
          "Clients"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Case-insensitive text search across implemented public fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "territory",
            "in": "query",
            "description": "Filter by public client territory.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public client list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicClientsListResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/v1/jobs": {
      "get": {
        "operationId": "listPublicJobs",
        "summary": "List public jobs",
        "description": "Returns sanitized public job records available for company-site display and agent reads.",
        "tags": [
          "Careers"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Case-insensitive text search across implemented public fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by public job status.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "department",
            "in": "query",
            "description": "Filter by public department label.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public job list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicJobsListResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/v1/jobs/{id}": {
      "get": {
        "operationId": "getPublicJob",
        "summary": "Get a public job",
        "description": "Returns one sanitized public job record by stable public identifier.",
        "tags": [
          "Careers"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Stable public job identifier.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public job.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicJobResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Job not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/v1/projects": {
      "get": {
        "operationId": "listPublicProjects",
        "summary": "List public projects",
        "description": "Returns sanitized public project records available for the Projects page and agent reads.",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Case-insensitive text search across implemented public fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "description": "Filter by public project category.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public project list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicProjectsListResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/v1/projects/{id}": {
      "get": {
        "operationId": "getPublicProject",
        "summary": "Get a public project",
        "description": "Returns one sanitized public project record by Frappe Project ID or human-readable slug.",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Frappe Project primary key or human-readable project slug.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public project.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicProjectResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Project not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiErrorResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/blog/api/openapi.json": {
      "get": {
        "operationId": "getBlogOpenApiDocument",
        "summary": "Get the blog public OpenAPI document",
        "description": "Returns the generated OpenAPI contract for Grayhat public blog APIs.",
        "tags": [
          "Discovery"
        ],
        "responses": {
          "200": {
            "description": "Generated OpenAPI document.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/blog/api/public/v1/posts": {
      "get": {
        "operationId": "listBlogPosts",
        "summary": "List public blog posts",
        "description": "Returns public Ghost posts available for blog display and agent reads.",
        "tags": [
          "Posts"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Case-insensitive text search across implemented public fields.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "description": "Filter by public tag slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "author",
            "in": "query",
            "description": "Filter by public author slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "featured",
            "in": "query",
            "description": "Filter by featured status.",
            "schema": {
              "type": "string",
              "enum": [
                "true",
                "false"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public blog post list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPublicPostsListResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/blog/api/public/v1/posts/{slug}": {
      "get": {
        "operationId": "getBlogPost",
        "summary": "Get a public blog post",
        "description": "Returns one public Ghost post or page by slug, including rendered HTML.",
        "tags": [
          "Posts"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Public blog post or page slug.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public blog post with content HTML.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPublicPostResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Blog post not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPublicApiErrorResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/blog/api/public/v1/tags": {
      "get": {
        "operationId": "listBlogTags",
        "summary": "List public blog tags",
        "description": "Returns public Ghost tags that have at least one routed blog post.",
        "tags": [
          "Tags"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Case-insensitive text search across implemented public fields.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public blog tag list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPublicTagsListResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/blog/api/public/v1/tags/{slug}": {
      "get": {
        "operationId": "getBlogTag",
        "summary": "Get a public blog tag",
        "description": "Returns one public Ghost tag by slug.",
        "tags": [
          "Tags"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Public blog tag slug.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public blog tag.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPublicTagResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Blog tag not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPublicApiErrorResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/blog/api/public/v1/authors": {
      "get": {
        "operationId": "listBlogAuthors",
        "summary": "List public blog authors",
        "description": "Returns public Ghost authors that have at least one routed blog post.",
        "tags": [
          "Authors"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Case-insensitive text search across implemented public fields.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public blog author list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPublicAuthorsListResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/blog/api/public/v1/authors/{slug}": {
      "get": {
        "operationId": "getBlogAuthor",
        "summary": "Get a public blog author",
        "description": "Returns one public Ghost author by slug.",
        "tags": [
          "Authors"
        ],
        "parameters": [
          {
            "name": "format",
            "in": "query",
            "description": "Optional response format. JSON is returned by default.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "toon"
              ]
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Public blog author slug.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public blog author.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPublicAuthorResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Blog author not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPublicApiErrorResponse"
                }
              },
              "text/toon": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "PublicApiErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "NOT_FOUND",
                  "PUBLIC_CONTENT_UNAVAILABLE",
                  "VALIDATION_ERROR"
                ],
                "description": "Stable machine-readable error code."
              },
              "message": {
                "type": "string",
                "description": "Public, non-secret error message."
              }
            },
            "required": [
              "code",
              "message"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      },
      "PublicTeamListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Stable public team member identifier."
                },
                "name": {
                  "type": "string",
                  "description": "Public display name."
                },
                "designation": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public role or designation."
                },
                "department": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public department label."
                },
                "imageUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "First-party public image URL generated by the content pipeline."
                },
                "image": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Stable public asset identifier."
                    },
                    "provider": {
                      "type": "string",
                      "enum": [
                        "r2",
                        "cloudflare-images",
                        "cloudflare-stream"
                      ],
                      "description": "Cloudflare media provider that owns the public delivery URL."
                    },
                    "url": {
                      "type": "string",
                      "description": "Public first-party delivery URL."
                    },
                    "storageKey": {
                      "type": "string",
                      "description": "Provider storage key for operations and debugging."
                    },
                    "contentType": {
                      "type": "string",
                      "description": "Asset MIME type."
                    },
                    "mediaType": {
                      "type": "string",
                      "enum": [
                        "image",
                        "video",
                        "audio"
                      ],
                      "description": "Public media category."
                    },
                    "byteLength": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "width": {
                      "type": "integer",
                      "exclusiveMinimum": true,
                      "minimum": 0
                    },
                    "height": {
                      "type": "integer",
                      "exclusiveMinimum": true,
                      "minimum": 0
                    },
                    "presentation": {
                      "type": "object",
                      "properties": {
                        "dominantColor": {
                          "type": "string",
                          "description": "Hex dominant or average color used for stable placeholders."
                        },
                        "placeholderDataUrl": {
                          "type": "string",
                          "description": "Tiny embedded LQIP data URL for perceived loading."
                        },
                        "variants": {
                          "type": "object",
                          "properties": {
                            "thumb": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "description": "First-party delivery URL for this media variant."
                                },
                                "storageKey": {
                                  "type": "string",
                                  "description": "Provider storage key for operations and debugging."
                                },
                                "width": {
                                  "type": "integer",
                                  "exclusiveMinimum": true,
                                  "minimum": 0,
                                  "description": "Variant width in pixels, when applicable."
                                },
                                "height": {
                                  "type": "integer",
                                  "exclusiveMinimum": true,
                                  "minimum": 0,
                                  "description": "Variant height in pixels, when applicable."
                                },
                                "contentType": {
                                  "type": "string",
                                  "description": "Variant MIME type."
                                },
                                "byteLength": {
                                  "type": "integer",
                                  "minimum": 0
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false
                            },
                            "avatar": {
                              "$ref": "#/definitions/PublicTeamListResponse/properties/data/items/properties/image/properties/presentation/properties/variants/properties/thumb"
                            },
                            "logo": {
                              "$ref": "#/definitions/PublicTeamListResponse/properties/data/items/properties/image/properties/presentation/properties/variants/properties/thumb"
                            },
                            "card": {
                              "$ref": "#/definitions/PublicTeamListResponse/properties/data/items/properties/image/properties/presentation/properties/variants/properties/thumb"
                            },
                            "wide": {
                              "$ref": "#/definitions/PublicTeamListResponse/properties/data/items/properties/image/properties/presentation/properties/variants/properties/thumb"
                            },
                            "full": {
                              "$ref": "#/definitions/PublicTeamListResponse/properties/data/items/properties/image/properties/presentation/properties/variants/properties/thumb"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Pre-generated responsive variants for public rendering slots."
                        }
                      },
                      "additionalProperties": false,
                      "description": "Responsive variants and perceived-loading metadata."
                    }
                  },
                  "required": [
                    "id",
                    "provider",
                    "url",
                    "contentType",
                    "mediaType"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Canonical public image asset metadata."
                },
                "employmentType": {
                  "type": "string",
                  "nullable": true,
                  "description": "Source employment type used for snapshot ordering."
                },
                "joinedAt": {
                  "type": "string",
                  "nullable": true,
                  "description": "Source joining date used for snapshot ordering."
                },
                "sortGroupRank": {
                  "type": "integer",
                  "minimum": 0
                },
                "sortJoinedAt": {
                  "type": "string"
                },
                "createdAt": {
                  "type": "string",
                  "description": "Team member creation timestamp."
                }
              },
              "required": [
                "id",
                "name",
                "designation",
                "department",
                "imageUrl"
              ],
              "additionalProperties": false
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "minimum": 0
              },
              "filters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "PublicTeamMemberResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Stable public team member identifier."
              },
              "name": {
                "type": "string",
                "description": "Public display name."
              },
              "designation": {
                "type": "string",
                "nullable": true,
                "description": "Public role or designation."
              },
              "department": {
                "type": "string",
                "nullable": true,
                "description": "Public department label."
              },
              "imageUrl": {
                "type": "string",
                "nullable": true,
                "description": "First-party public image URL generated by the content pipeline."
              },
              "image": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Stable public asset identifier."
                  },
                  "provider": {
                    "type": "string",
                    "enum": [
                      "r2",
                      "cloudflare-images",
                      "cloudflare-stream"
                    ],
                    "description": "Cloudflare media provider that owns the public delivery URL."
                  },
                  "url": {
                    "type": "string",
                    "description": "Public first-party delivery URL."
                  },
                  "storageKey": {
                    "type": "string",
                    "description": "Provider storage key for operations and debugging."
                  },
                  "contentType": {
                    "type": "string",
                    "description": "Asset MIME type."
                  },
                  "mediaType": {
                    "type": "string",
                    "enum": [
                      "image",
                      "video",
                      "audio"
                    ],
                    "description": "Public media category."
                  },
                  "byteLength": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "width": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "height": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0
                  },
                  "presentation": {
                    "type": "object",
                    "properties": {
                      "dominantColor": {
                        "type": "string",
                        "description": "Hex dominant or average color used for stable placeholders."
                      },
                      "placeholderDataUrl": {
                        "type": "string",
                        "description": "Tiny embedded LQIP data URL for perceived loading."
                      },
                      "variants": {
                        "type": "object",
                        "properties": {
                          "thumb": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "description": "First-party delivery URL for this media variant."
                              },
                              "storageKey": {
                                "type": "string",
                                "description": "Provider storage key for operations and debugging."
                              },
                              "width": {
                                "type": "integer",
                                "exclusiveMinimum": true,
                                "minimum": 0,
                                "description": "Variant width in pixels, when applicable."
                              },
                              "height": {
                                "type": "integer",
                                "exclusiveMinimum": true,
                                "minimum": 0,
                                "description": "Variant height in pixels, when applicable."
                              },
                              "contentType": {
                                "type": "string",
                                "description": "Variant MIME type."
                              },
                              "byteLength": {
                                "type": "integer",
                                "minimum": 0
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          },
                          "avatar": {
                            "$ref": "#/definitions/PublicTeamMemberResponse/properties/data/properties/image/properties/presentation/properties/variants/properties/thumb"
                          },
                          "logo": {
                            "$ref": "#/definitions/PublicTeamMemberResponse/properties/data/properties/image/properties/presentation/properties/variants/properties/thumb"
                          },
                          "card": {
                            "$ref": "#/definitions/PublicTeamMemberResponse/properties/data/properties/image/properties/presentation/properties/variants/properties/thumb"
                          },
                          "wide": {
                            "$ref": "#/definitions/PublicTeamMemberResponse/properties/data/properties/image/properties/presentation/properties/variants/properties/thumb"
                          },
                          "full": {
                            "$ref": "#/definitions/PublicTeamMemberResponse/properties/data/properties/image/properties/presentation/properties/variants/properties/thumb"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Pre-generated responsive variants for public rendering slots."
                      }
                    },
                    "additionalProperties": false,
                    "description": "Responsive variants and perceived-loading metadata."
                  }
                },
                "required": [
                  "id",
                  "provider",
                  "url",
                  "contentType",
                  "mediaType"
                ],
                "additionalProperties": false,
                "nullable": true,
                "description": "Canonical public image asset metadata."
              },
              "employmentType": {
                "type": "string",
                "nullable": true,
                "description": "Source employment type used for snapshot ordering."
              },
              "joinedAt": {
                "type": "string",
                "nullable": true,
                "description": "Source joining date used for snapshot ordering."
              },
              "sortGroupRank": {
                "type": "integer",
                "minimum": 0
              },
              "sortJoinedAt": {
                "type": "string"
              },
              "createdAt": {
                "type": "string",
                "description": "Team member creation timestamp."
              }
            },
            "required": [
              "id",
              "name",
              "designation",
              "department",
              "imageUrl"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "PublicClientsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Stable public client identifier."
                },
                "name": {
                  "type": "string",
                  "description": "Public client display name."
                },
                "territory": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public client territory."
                },
                "createdAt": {
                  "type": "string",
                  "description": "Client creation or partnership timestamp."
                },
                "websiteUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public client website URL."
                },
                "linkedinUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public client LinkedIn URL when available."
                },
                "xUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public client X or Twitter URL when available."
                },
                "shortBio": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public client short bio from the Customer short bio field, falling back to Customer description when available."
                },
                "description": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public client long-form description from the Customer description-style fields when available."
                },
                "logoUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "First-party generated public client logo URL derived from Customer attachments when available."
                },
                "logo": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Stable public asset identifier."
                    },
                    "provider": {
                      "type": "string",
                      "enum": [
                        "r2",
                        "cloudflare-images",
                        "cloudflare-stream"
                      ],
                      "description": "Cloudflare media provider that owns the public delivery URL."
                    },
                    "url": {
                      "type": "string",
                      "description": "Public first-party delivery URL."
                    },
                    "storageKey": {
                      "type": "string",
                      "description": "Provider storage key for operations and debugging."
                    },
                    "contentType": {
                      "type": "string",
                      "description": "Asset MIME type."
                    },
                    "mediaType": {
                      "type": "string",
                      "enum": [
                        "image",
                        "video",
                        "audio"
                      ],
                      "description": "Public media category."
                    },
                    "byteLength": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "width": {
                      "type": "integer",
                      "exclusiveMinimum": true,
                      "minimum": 0
                    },
                    "height": {
                      "type": "integer",
                      "exclusiveMinimum": true,
                      "minimum": 0
                    },
                    "presentation": {
                      "type": "object",
                      "properties": {
                        "dominantColor": {
                          "type": "string",
                          "description": "Hex dominant or average color used for stable placeholders."
                        },
                        "placeholderDataUrl": {
                          "type": "string",
                          "description": "Tiny embedded LQIP data URL for perceived loading."
                        },
                        "variants": {
                          "type": "object",
                          "properties": {
                            "thumb": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "description": "First-party delivery URL for this media variant."
                                },
                                "storageKey": {
                                  "type": "string",
                                  "description": "Provider storage key for operations and debugging."
                                },
                                "width": {
                                  "type": "integer",
                                  "exclusiveMinimum": true,
                                  "minimum": 0,
                                  "description": "Variant width in pixels, when applicable."
                                },
                                "height": {
                                  "type": "integer",
                                  "exclusiveMinimum": true,
                                  "minimum": 0,
                                  "description": "Variant height in pixels, when applicable."
                                },
                                "contentType": {
                                  "type": "string",
                                  "description": "Variant MIME type."
                                },
                                "byteLength": {
                                  "type": "integer",
                                  "minimum": 0
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false
                            },
                            "avatar": {
                              "$ref": "#/definitions/PublicClientsListResponse/properties/data/items/properties/logo/properties/presentation/properties/variants/properties/thumb"
                            },
                            "logo": {
                              "$ref": "#/definitions/PublicClientsListResponse/properties/data/items/properties/logo/properties/presentation/properties/variants/properties/thumb"
                            },
                            "card": {
                              "$ref": "#/definitions/PublicClientsListResponse/properties/data/items/properties/logo/properties/presentation/properties/variants/properties/thumb"
                            },
                            "wide": {
                              "$ref": "#/definitions/PublicClientsListResponse/properties/data/items/properties/logo/properties/presentation/properties/variants/properties/thumb"
                            },
                            "full": {
                              "$ref": "#/definitions/PublicClientsListResponse/properties/data/items/properties/logo/properties/presentation/properties/variants/properties/thumb"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Pre-generated responsive variants for public rendering slots."
                        }
                      },
                      "additionalProperties": false,
                      "description": "Responsive variants and perceived-loading metadata."
                    }
                  },
                  "required": [
                    "id",
                    "provider",
                    "url",
                    "contentType",
                    "mediaType"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Canonical public client logo asset metadata."
                },
                "contacts": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Stable public client contact identifier."
                      },
                      "firstName": {
                        "type": "string",
                        "nullable": true,
                        "description": "Public client contact first name when available."
                      },
                      "name": {
                        "type": "string",
                        "description": "Public client contact display name."
                      },
                      "designation": {
                        "type": "string",
                        "nullable": true,
                        "description": "Public client contact designation when available."
                      },
                      "imageUrl": {
                        "type": "string",
                        "nullable": true,
                        "description": "First-party generated public client contact image URL."
                      },
                      "image": {
                        "allOf": [
                          {
                            "$ref": "#/definitions/PublicClientsListResponse/properties/data/items/properties/logo"
                          }
                        ],
                        "nullable": true,
                        "description": "Canonical public client contact image asset metadata."
                      }
                    },
                    "required": [
                      "id",
                      "name"
                    ],
                    "additionalProperties": false
                  },
                  "default": [],
                  "description": "Public contacts linked to the Customer record."
                }
              },
              "required": [
                "id",
                "name",
                "territory",
                "websiteUrl"
              ],
              "additionalProperties": false
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "minimum": 0
              },
              "filters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "PublicJobsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Stable public job identifier."
                },
                "title": {
                  "type": "string",
                  "description": "Public role title."
                },
                "company": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public company label."
                },
                "status": {
                  "type": "string",
                  "description": "Public job status."
                },
                "publishOnWebsite": {
                  "type": "boolean",
                  "description": "Whether the role is marked for public website display."
                },
                "department": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public department label."
                },
                "location": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public location label."
                },
                "employmentType": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public employment type label."
                },
                "description": {
                  "type": "string",
                  "description": "Public role description HTML."
                },
                "createdAt": {
                  "type": "string",
                  "description": "Source creation timestamp."
                },
                "postedOn": {
                  "type": "string",
                  "description": "Public job posted date from the source system."
                },
                "closesOn": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public job closing date for open roles from the source system."
                },
                "closedOn": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public job closed date for non-open roles from the source system, if set."
                },
                "applicationRoute": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public application link configured for the role, if available."
                },
                "currency": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public salary currency when the salary range is published."
                },
                "salaryPaidPer": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public salary cadence such as month when the salary range is published."
                },
                "lowerRange": {
                  "type": "number",
                  "nullable": true,
                  "description": "Public lower salary range when the salary range is published."
                },
                "upperRange": {
                  "type": "number",
                  "nullable": true,
                  "description": "Public upper salary range when the salary range is published."
                },
                "publishSalaryRange": {
                  "type": "boolean",
                  "description": "Whether the public salary range may be shown."
                },
                "plannedVacancies": {
                  "type": "integer",
                  "minimum": 0
                },
                "vacancies": {
                  "type": "integer",
                  "minimum": 0
                },
                "url": {
                  "type": "string",
                  "description": "Canonical public company-site role URL."
                }
              },
              "required": [
                "id",
                "title",
                "company",
                "status",
                "department",
                "description",
                "createdAt",
                "plannedVacancies",
                "vacancies",
                "url"
              ],
              "additionalProperties": false
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "minimum": 0
              },
              "filters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "PublicJobResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Stable public job identifier."
              },
              "title": {
                "type": "string",
                "description": "Public role title."
              },
              "company": {
                "type": "string",
                "nullable": true,
                "description": "Public company label."
              },
              "status": {
                "type": "string",
                "description": "Public job status."
              },
              "publishOnWebsite": {
                "type": "boolean",
                "description": "Whether the role is marked for public website display."
              },
              "department": {
                "type": "string",
                "nullable": true,
                "description": "Public department label."
              },
              "location": {
                "type": "string",
                "nullable": true,
                "description": "Public location label."
              },
              "employmentType": {
                "type": "string",
                "nullable": true,
                "description": "Public employment type label."
              },
              "description": {
                "type": "string",
                "description": "Public role description HTML."
              },
              "createdAt": {
                "type": "string",
                "description": "Source creation timestamp."
              },
              "postedOn": {
                "type": "string",
                "description": "Public job posted date from the source system."
              },
              "closesOn": {
                "type": "string",
                "nullable": true,
                "description": "Public job closing date for open roles from the source system."
              },
              "closedOn": {
                "type": "string",
                "nullable": true,
                "description": "Public job closed date for non-open roles from the source system, if set."
              },
              "applicationRoute": {
                "type": "string",
                "nullable": true,
                "description": "Public application link configured for the role, if available."
              },
              "currency": {
                "type": "string",
                "nullable": true,
                "description": "Public salary currency when the salary range is published."
              },
              "salaryPaidPer": {
                "type": "string",
                "nullable": true,
                "description": "Public salary cadence such as month when the salary range is published."
              },
              "lowerRange": {
                "type": "number",
                "nullable": true,
                "description": "Public lower salary range when the salary range is published."
              },
              "upperRange": {
                "type": "number",
                "nullable": true,
                "description": "Public upper salary range when the salary range is published."
              },
              "publishSalaryRange": {
                "type": "boolean",
                "description": "Whether the public salary range may be shown."
              },
              "plannedVacancies": {
                "type": "integer",
                "minimum": 0
              },
              "vacancies": {
                "type": "integer",
                "minimum": 0
              },
              "url": {
                "type": "string",
                "description": "Canonical public company-site role URL."
              }
            },
            "required": [
              "id",
              "title",
              "company",
              "status",
              "department",
              "description",
              "createdAt",
              "plannedVacancies",
              "vacancies",
              "url"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "PublicProjectsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Stable public project identifier."
                },
                "slug": {
                  "type": "string",
                  "nullable": true,
                  "description": "Human-readable project URL slug, falling back to project name."
                },
                "name": {
                  "type": "string",
                  "description": "Public project display name."
                },
                "position": {
                  "type": "integer",
                  "nullable": true,
                  "description": "Homepage and projects-list ordering weight from the CMS, where higher values appear first."
                },
                "tagline": {
                  "type": "string",
                  "nullable": true,
                  "description": "Brief public tagline shown on the project card, when configured."
                },
                "description": {
                  "type": "string",
                  "nullable": true,
                  "description": "Full HTML project description rendered from source rich text or Markdown fields."
                },
                "client": {
                  "type": "string",
                  "nullable": true,
                  "description": "Client / customer name linked to the project."
                },
                "testimonialId": {
                  "type": "string",
                  "nullable": true,
                  "description": "Optional public testimonial identifier linked directly from the project in the CMS."
                },
                "category": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public project category, mapped from source project type."
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Searchable public project tags, when configured."
                },
                "startDate": {
                  "type": "string",
                  "nullable": true,
                  "description": "Expected project start date from the source, when configured."
                },
                "endDate": {
                  "type": "string",
                  "nullable": true,
                  "description": "Expected project end date from the source, when configured."
                },
                "yearCompleted": {
                  "type": "integer",
                  "nullable": true,
                  "description": "Completion year derived from project dates or configured directly."
                },
                "status": {
                  "type": "string",
                  "description": "Project status."
                },
                "featuredImage": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Stable generated public asset identifier."
                    },
                    "url": {
                      "type": "string",
                      "description": "First-party generated project attachment URL."
                    },
                    "provider": {
                      "type": "string",
                      "enum": [
                        "r2",
                        "cloudflare-images",
                        "cloudflare-stream"
                      ],
                      "description": "Cloudflare media provider that owns the public URL."
                    },
                    "storageKey": {
                      "type": "string",
                      "description": "Provider storage key for operations and debugging."
                    },
                    "alt": {
                      "type": "string",
                      "description": "Accessible media text derived from the project."
                    },
                    "mediaType": {
                      "type": "string",
                      "enum": [
                        "image",
                        "video",
                        "audio"
                      ],
                      "description": "Project attachment media type. Older snapshots default to image."
                    },
                    "contentType": {
                      "type": "string",
                      "description": "Source attachment MIME type detected during generation."
                    },
                    "width": {
                      "type": "integer",
                      "exclusiveMinimum": true,
                      "minimum": 0,
                      "description": "Source media width in pixels, when detected during generation."
                    },
                    "height": {
                      "type": "integer",
                      "exclusiveMinimum": true,
                      "minimum": 0,
                      "description": "Source media height in pixels, when detected during generation."
                    },
                    "byteLength": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Stored public asset byte length."
                    },
                    "presentation": {
                      "type": "object",
                      "properties": {
                        "dominantColor": {
                          "type": "string",
                          "description": "Hex dominant or average color used for stable placeholders."
                        },
                        "placeholderDataUrl": {
                          "type": "string",
                          "description": "Tiny embedded LQIP data URL for perceived loading."
                        },
                        "variants": {
                          "type": "object",
                          "properties": {
                            "thumb": {
                              "type": "object",
                              "properties": {
                                "url": {
                                  "type": "string",
                                  "description": "First-party delivery URL for this media variant."
                                },
                                "storageKey": {
                                  "type": "string",
                                  "description": "Provider storage key for operations and debugging."
                                },
                                "width": {
                                  "type": "integer",
                                  "exclusiveMinimum": true,
                                  "minimum": 0,
                                  "description": "Variant width in pixels, when applicable."
                                },
                                "height": {
                                  "type": "integer",
                                  "exclusiveMinimum": true,
                                  "minimum": 0,
                                  "description": "Variant height in pixels, when applicable."
                                },
                                "contentType": {
                                  "type": "string",
                                  "description": "Variant MIME type."
                                },
                                "byteLength": {
                                  "type": "integer",
                                  "minimum": 0
                                }
                              },
                              "required": [
                                "url"
                              ],
                              "additionalProperties": false
                            },
                            "avatar": {
                              "$ref": "#/definitions/PublicProjectsListResponse/properties/data/items/properties/featuredImage/properties/presentation/properties/variants/properties/thumb"
                            },
                            "logo": {
                              "$ref": "#/definitions/PublicProjectsListResponse/properties/data/items/properties/featuredImage/properties/presentation/properties/variants/properties/thumb"
                            },
                            "card": {
                              "$ref": "#/definitions/PublicProjectsListResponse/properties/data/items/properties/featuredImage/properties/presentation/properties/variants/properties/thumb"
                            },
                            "wide": {
                              "$ref": "#/definitions/PublicProjectsListResponse/properties/data/items/properties/featuredImage/properties/presentation/properties/variants/properties/thumb"
                            },
                            "full": {
                              "$ref": "#/definitions/PublicProjectsListResponse/properties/data/items/properties/featuredImage/properties/presentation/properties/variants/properties/thumb"
                            }
                          },
                          "additionalProperties": false,
                          "description": "Pre-generated responsive variants for public rendering slots."
                        }
                      },
                      "additionalProperties": false,
                      "description": "Responsive variants and perceived-loading metadata."
                    }
                  },
                  "required": [
                    "id",
                    "url",
                    "alt"
                  ],
                  "additionalProperties": false,
                  "nullable": true,
                  "description": "Primary project image derived from the first image attachment."
                },
                "ogImageUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "First-party generated final project Open Graph card image URL."
                },
                "gallery": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/PublicProjectsListResponse/properties/data/items/properties/featuredImage"
                  },
                  "description": "Project image, GIF, video, and audio gallery from attachments."
                },
                "links": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "label": {
                        "type": "string",
                        "description": "Short public label for the project link or website resource row."
                      },
                      "name": {
                        "type": "string",
                        "description": "Secondary public website-resource name shown after the primary label when available."
                      },
                      "provider": {
                        "type": "string",
                        "description": "Project resource provider label from the source website-resource row, when configured."
                      },
                      "providerType": {
                        "type": "string",
                        "description": "Project resource provider type such as Blog Post, when available from the source provider."
                      },
                      "url": {
                        "type": "string",
                        "description": "Public project URL destination normalized from website resource rows or legacy link fields."
                      }
                    },
                    "required": [
                      "label",
                      "url"
                    ],
                    "additionalProperties": false
                  },
                  "default": [],
                  "description": "Public project links from website resource rows or legacy links."
                },
                "resources": {
                  "type": "object",
                  "properties": {
                    "peopleCount": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Total resource count derived from historic Timesheet rows."
                    },
                    "estimatedCostBucket": {
                      "type": "string",
                      "nullable": true,
                      "description": "Public-safe estimated cost bucket calculated from default Activity Type rates."
                    },
                    "roles": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "designation": {
                            "type": "string",
                            "description": "Public resource designation derived from Timesheet activity type."
                          },
                          "count": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Number of resources recorded for this designation."
                          }
                        },
                        "required": [
                          "designation",
                          "count"
                        ],
                        "additionalProperties": false
                      },
                      "description": "Public resource composition grouped by designation."
                    }
                  },
                  "required": [
                    "peopleCount",
                    "estimatedCostBucket",
                    "roles"
                  ],
                  "additionalProperties": false,
                  "description": "Public-safe project resources and estimated cost bucket."
                },
                "liveUrl": {
                  "type": "string",
                  "nullable": true,
                  "description": "Primary public project URL for the deliverable, when configured."
                },
                "createdAt": {
                  "type": "string",
                  "description": "Project creation timestamp."
                }
              },
              "required": [
                "id",
                "name",
                "tagline",
                "description",
                "client",
                "category",
                "tags",
                "yearCompleted",
                "status",
                "featuredImage",
                "gallery",
                "liveUrl",
                "createdAt"
              ],
              "additionalProperties": false
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "minimum": 0
              },
              "filters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "PublicProjectResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Stable public project identifier."
              },
              "slug": {
                "type": "string",
                "nullable": true,
                "description": "Human-readable project URL slug, falling back to project name."
              },
              "name": {
                "type": "string",
                "description": "Public project display name."
              },
              "position": {
                "type": "integer",
                "nullable": true,
                "description": "Homepage and projects-list ordering weight from the CMS, where higher values appear first."
              },
              "tagline": {
                "type": "string",
                "nullable": true,
                "description": "Brief public tagline shown on the project card, when configured."
              },
              "description": {
                "type": "string",
                "nullable": true,
                "description": "Full HTML project description rendered from source rich text or Markdown fields."
              },
              "client": {
                "type": "string",
                "nullable": true,
                "description": "Client / customer name linked to the project."
              },
              "testimonialId": {
                "type": "string",
                "nullable": true,
                "description": "Optional public testimonial identifier linked directly from the project in the CMS."
              },
              "category": {
                "type": "string",
                "nullable": true,
                "description": "Public project category, mapped from source project type."
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Searchable public project tags, when configured."
              },
              "startDate": {
                "type": "string",
                "nullable": true,
                "description": "Expected project start date from the source, when configured."
              },
              "endDate": {
                "type": "string",
                "nullable": true,
                "description": "Expected project end date from the source, when configured."
              },
              "yearCompleted": {
                "type": "integer",
                "nullable": true,
                "description": "Completion year derived from project dates or configured directly."
              },
              "status": {
                "type": "string",
                "description": "Project status."
              },
              "featuredImage": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Stable generated public asset identifier."
                  },
                  "url": {
                    "type": "string",
                    "description": "First-party generated project attachment URL."
                  },
                  "provider": {
                    "type": "string",
                    "enum": [
                      "r2",
                      "cloudflare-images",
                      "cloudflare-stream"
                    ],
                    "description": "Cloudflare media provider that owns the public URL."
                  },
                  "storageKey": {
                    "type": "string",
                    "description": "Provider storage key for operations and debugging."
                  },
                  "alt": {
                    "type": "string",
                    "description": "Accessible media text derived from the project."
                  },
                  "mediaType": {
                    "type": "string",
                    "enum": [
                      "image",
                      "video",
                      "audio"
                    ],
                    "description": "Project attachment media type. Older snapshots default to image."
                  },
                  "contentType": {
                    "type": "string",
                    "description": "Source attachment MIME type detected during generation."
                  },
                  "width": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "description": "Source media width in pixels, when detected during generation."
                  },
                  "height": {
                    "type": "integer",
                    "exclusiveMinimum": true,
                    "minimum": 0,
                    "description": "Source media height in pixels, when detected during generation."
                  },
                  "byteLength": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Stored public asset byte length."
                  },
                  "presentation": {
                    "type": "object",
                    "properties": {
                      "dominantColor": {
                        "type": "string",
                        "description": "Hex dominant or average color used for stable placeholders."
                      },
                      "placeholderDataUrl": {
                        "type": "string",
                        "description": "Tiny embedded LQIP data URL for perceived loading."
                      },
                      "variants": {
                        "type": "object",
                        "properties": {
                          "thumb": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string",
                                "description": "First-party delivery URL for this media variant."
                              },
                              "storageKey": {
                                "type": "string",
                                "description": "Provider storage key for operations and debugging."
                              },
                              "width": {
                                "type": "integer",
                                "exclusiveMinimum": true,
                                "minimum": 0,
                                "description": "Variant width in pixels, when applicable."
                              },
                              "height": {
                                "type": "integer",
                                "exclusiveMinimum": true,
                                "minimum": 0,
                                "description": "Variant height in pixels, when applicable."
                              },
                              "contentType": {
                                "type": "string",
                                "description": "Variant MIME type."
                              },
                              "byteLength": {
                                "type": "integer",
                                "minimum": 0
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "additionalProperties": false
                          },
                          "avatar": {
                            "$ref": "#/definitions/PublicProjectResponse/properties/data/properties/featuredImage/properties/presentation/properties/variants/properties/thumb"
                          },
                          "logo": {
                            "$ref": "#/definitions/PublicProjectResponse/properties/data/properties/featuredImage/properties/presentation/properties/variants/properties/thumb"
                          },
                          "card": {
                            "$ref": "#/definitions/PublicProjectResponse/properties/data/properties/featuredImage/properties/presentation/properties/variants/properties/thumb"
                          },
                          "wide": {
                            "$ref": "#/definitions/PublicProjectResponse/properties/data/properties/featuredImage/properties/presentation/properties/variants/properties/thumb"
                          },
                          "full": {
                            "$ref": "#/definitions/PublicProjectResponse/properties/data/properties/featuredImage/properties/presentation/properties/variants/properties/thumb"
                          }
                        },
                        "additionalProperties": false,
                        "description": "Pre-generated responsive variants for public rendering slots."
                      }
                    },
                    "additionalProperties": false,
                    "description": "Responsive variants and perceived-loading metadata."
                  }
                },
                "required": [
                  "id",
                  "url",
                  "alt"
                ],
                "additionalProperties": false,
                "nullable": true,
                "description": "Primary project image derived from the first image attachment."
              },
              "ogImageUrl": {
                "type": "string",
                "nullable": true,
                "description": "First-party generated final project Open Graph card image URL."
              },
              "gallery": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/PublicProjectResponse/properties/data/properties/featuredImage"
                },
                "description": "Project image, GIF, video, and audio gallery from attachments."
              },
              "links": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "label": {
                      "type": "string",
                      "description": "Short public label for the project link or website resource row."
                    },
                    "name": {
                      "type": "string",
                      "description": "Secondary public website-resource name shown after the primary label when available."
                    },
                    "provider": {
                      "type": "string",
                      "description": "Project resource provider label from the source website-resource row, when configured."
                    },
                    "providerType": {
                      "type": "string",
                      "description": "Project resource provider type such as Blog Post, when available from the source provider."
                    },
                    "url": {
                      "type": "string",
                      "description": "Public project URL destination normalized from website resource rows or legacy link fields."
                    }
                  },
                  "required": [
                    "label",
                    "url"
                  ],
                  "additionalProperties": false
                },
                "default": [],
                "description": "Public project links from website resource rows or legacy links."
              },
              "resources": {
                "type": "object",
                "properties": {
                  "peopleCount": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Total resource count derived from historic Timesheet rows."
                  },
                  "estimatedCostBucket": {
                    "type": "string",
                    "nullable": true,
                    "description": "Public-safe estimated cost bucket calculated from default Activity Type rates."
                  },
                  "roles": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "designation": {
                          "type": "string",
                          "description": "Public resource designation derived from Timesheet activity type."
                        },
                        "count": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Number of resources recorded for this designation."
                        }
                      },
                      "required": [
                        "designation",
                        "count"
                      ],
                      "additionalProperties": false
                    },
                    "description": "Public resource composition grouped by designation."
                  }
                },
                "required": [
                  "peopleCount",
                  "estimatedCostBucket",
                  "roles"
                ],
                "additionalProperties": false,
                "description": "Public-safe project resources and estimated cost bucket."
              },
              "liveUrl": {
                "type": "string",
                "nullable": true,
                "description": "Primary public project URL for the deliverable, when configured."
              },
              "createdAt": {
                "type": "string",
                "description": "Project creation timestamp."
              }
            },
            "required": [
              "id",
              "name",
              "tagline",
              "description",
              "client",
              "category",
              "tags",
              "yearCompleted",
              "status",
              "featuredImage",
              "gallery",
              "liveUrl",
              "createdAt"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "BlogPublicApiErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "NOT_FOUND",
                  "PUBLIC_CONTENT_UNAVAILABLE"
                ],
                "description": "Stable machine-readable error code."
              },
              "message": {
                "type": "string",
                "description": "Public, non-secret error message."
              }
            },
            "required": [
              "code",
              "message"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      },
      "BlogPublicPostsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Stable Ghost post identifier."
                },
                "uuid": {
                  "type": "string",
                  "nullable": true,
                  "description": "Ghost post UUID when available."
                },
                "slug": {
                  "type": "string",
                  "description": "Public post slug."
                },
                "title": {
                  "type": "string",
                  "description": "Public post title."
                },
                "excerpt": {
                  "type": "string",
                  "description": "Public post summary."
                },
                "url": {
                  "type": "string",
                  "description": "Canonical public blog post URL."
                },
                "featureImage": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public post feature image URL."
                },
                "featureImageAlt": {
                  "type": "string",
                  "nullable": true,
                  "description": "Feature image alt text."
                },
                "publishedAt": {
                  "type": "string",
                  "nullable": true,
                  "description": "Published timestamp."
                },
                "updatedAt": {
                  "type": "string",
                  "nullable": true,
                  "description": "Updated timestamp."
                },
                "readingTime": {
                  "type": "integer",
                  "minimum": 0,
                  "nullable": true
                },
                "featured": {
                  "type": "boolean"
                },
                "visibility": {
                  "type": "string",
                  "nullable": true,
                  "description": "Ghost visibility value."
                },
                "primaryTag": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Stable Ghost tag identifier."
                    },
                    "slug": {
                      "type": "string",
                      "description": "Public tag slug."
                    },
                    "name": {
                      "type": "string",
                      "description": "Public display name."
                    },
                    "description": {
                      "type": "string",
                      "nullable": true,
                      "description": "Public tag description."
                    },
                    "featureImage": {
                      "type": "string",
                      "nullable": true,
                      "description": "Public tag feature image URL."
                    },
                    "url": {
                      "type": "string",
                      "description": "Canonical public blog tag URL."
                    },
                    "postCount": {
                      "type": "integer",
                      "minimum": 0,
                      "nullable": true
                    }
                  },
                  "required": [
                    "id",
                    "slug",
                    "name",
                    "description",
                    "featureImage",
                    "url",
                    "postCount"
                  ],
                  "additionalProperties": false,
                  "nullable": true
                },
                "primaryAuthor": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "description": "Stable Ghost author identifier."
                    },
                    "slug": {
                      "type": "string",
                      "description": "Public author slug."
                    },
                    "name": {
                      "type": "string",
                      "description": "Public display name."
                    },
                    "bio": {
                      "type": "string",
                      "nullable": true,
                      "description": "Public author biography."
                    },
                    "profileImage": {
                      "type": "string",
                      "nullable": true,
                      "description": "Public author profile image URL."
                    },
                    "coverImage": {
                      "type": "string",
                      "nullable": true,
                      "description": "Public author cover image URL."
                    },
                    "website": {
                      "type": "string",
                      "nullable": true,
                      "description": "Public author website URL."
                    },
                    "location": {
                      "type": "string",
                      "nullable": true,
                      "description": "Public author location."
                    },
                    "url": {
                      "type": "string",
                      "description": "Canonical public blog author URL."
                    },
                    "postCount": {
                      "type": "integer",
                      "minimum": 0,
                      "nullable": true
                    }
                  },
                  "required": [
                    "id",
                    "slug",
                    "name",
                    "bio",
                    "profileImage",
                    "coverImage",
                    "website",
                    "location",
                    "url",
                    "postCount"
                  ],
                  "additionalProperties": false,
                  "nullable": true
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/PublicPostsListResponse/properties/data/items/properties/primaryTag"
                  }
                },
                "authors": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/PublicPostsListResponse/properties/data/items/properties/primaryAuthor"
                  }
                }
              },
              "required": [
                "id",
                "uuid",
                "slug",
                "title",
                "excerpt",
                "url",
                "featureImage",
                "featureImageAlt",
                "publishedAt",
                "updatedAt",
                "readingTime",
                "featured",
                "visibility",
                "primaryTag",
                "primaryAuthor",
                "tags",
                "authors"
              ],
              "additionalProperties": false
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "minimum": 0
              },
              "filters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "BlogPublicPostResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Stable Ghost post identifier."
              },
              "uuid": {
                "type": "string",
                "nullable": true,
                "description": "Ghost post UUID when available."
              },
              "slug": {
                "type": "string",
                "description": "Public post slug."
              },
              "title": {
                "type": "string",
                "description": "Public post title."
              },
              "excerpt": {
                "type": "string",
                "description": "Public post summary."
              },
              "url": {
                "type": "string",
                "description": "Canonical public blog post URL."
              },
              "featureImage": {
                "type": "string",
                "nullable": true,
                "description": "Public post feature image URL."
              },
              "featureImageAlt": {
                "type": "string",
                "nullable": true,
                "description": "Feature image alt text."
              },
              "publishedAt": {
                "type": "string",
                "nullable": true,
                "description": "Published timestamp."
              },
              "updatedAt": {
                "type": "string",
                "nullable": true,
                "description": "Updated timestamp."
              },
              "readingTime": {
                "type": "integer",
                "minimum": 0,
                "nullable": true
              },
              "featured": {
                "type": "boolean"
              },
              "visibility": {
                "type": "string",
                "nullable": true,
                "description": "Ghost visibility value."
              },
              "primaryTag": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Stable Ghost tag identifier."
                  },
                  "slug": {
                    "type": "string",
                    "description": "Public tag slug."
                  },
                  "name": {
                    "type": "string",
                    "description": "Public display name."
                  },
                  "description": {
                    "type": "string",
                    "nullable": true,
                    "description": "Public tag description."
                  },
                  "featureImage": {
                    "type": "string",
                    "nullable": true,
                    "description": "Public tag feature image URL."
                  },
                  "url": {
                    "type": "string",
                    "description": "Canonical public blog tag URL."
                  },
                  "postCount": {
                    "type": "integer",
                    "minimum": 0,
                    "nullable": true
                  }
                },
                "required": [
                  "id",
                  "slug",
                  "name",
                  "description",
                  "featureImage",
                  "url",
                  "postCount"
                ],
                "additionalProperties": false,
                "nullable": true
              },
              "primaryAuthor": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Stable Ghost author identifier."
                  },
                  "slug": {
                    "type": "string",
                    "description": "Public author slug."
                  },
                  "name": {
                    "type": "string",
                    "description": "Public display name."
                  },
                  "bio": {
                    "type": "string",
                    "nullable": true,
                    "description": "Public author biography."
                  },
                  "profileImage": {
                    "type": "string",
                    "nullable": true,
                    "description": "Public author profile image URL."
                  },
                  "coverImage": {
                    "type": "string",
                    "nullable": true,
                    "description": "Public author cover image URL."
                  },
                  "website": {
                    "type": "string",
                    "nullable": true,
                    "description": "Public author website URL."
                  },
                  "location": {
                    "type": "string",
                    "nullable": true,
                    "description": "Public author location."
                  },
                  "url": {
                    "type": "string",
                    "description": "Canonical public blog author URL."
                  },
                  "postCount": {
                    "type": "integer",
                    "minimum": 0,
                    "nullable": true
                  }
                },
                "required": [
                  "id",
                  "slug",
                  "name",
                  "bio",
                  "profileImage",
                  "coverImage",
                  "website",
                  "location",
                  "url",
                  "postCount"
                ],
                "additionalProperties": false,
                "nullable": true
              },
              "tags": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/PublicPostResponse/properties/data/properties/primaryTag"
                }
              },
              "authors": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/PublicPostResponse/properties/data/properties/primaryAuthor"
                }
              },
              "html": {
                "type": "string",
                "description": "Rendered Ghost post HTML."
              },
              "plaintext": {
                "type": "string",
                "description": "Plain-text post content."
              }
            },
            "required": [
              "id",
              "uuid",
              "slug",
              "title",
              "excerpt",
              "url",
              "featureImage",
              "featureImageAlt",
              "publishedAt",
              "updatedAt",
              "readingTime",
              "featured",
              "visibility",
              "primaryTag",
              "primaryAuthor",
              "tags",
              "authors",
              "html",
              "plaintext"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "BlogPublicTagsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Stable Ghost tag identifier."
                },
                "slug": {
                  "type": "string",
                  "description": "Public tag slug."
                },
                "name": {
                  "type": "string",
                  "description": "Public display name."
                },
                "description": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public tag description."
                },
                "featureImage": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public tag feature image URL."
                },
                "url": {
                  "type": "string",
                  "description": "Canonical public blog tag URL."
                },
                "postCount": {
                  "type": "integer",
                  "minimum": 0,
                  "nullable": true
                }
              },
              "required": [
                "id",
                "slug",
                "name",
                "description",
                "featureImage",
                "url",
                "postCount"
              ],
              "additionalProperties": false
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "minimum": 0
              },
              "filters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "BlogPublicTagResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Stable Ghost tag identifier."
              },
              "slug": {
                "type": "string",
                "description": "Public tag slug."
              },
              "name": {
                "type": "string",
                "description": "Public display name."
              },
              "description": {
                "type": "string",
                "nullable": true,
                "description": "Public tag description."
              },
              "featureImage": {
                "type": "string",
                "nullable": true,
                "description": "Public tag feature image URL."
              },
              "url": {
                "type": "string",
                "description": "Canonical public blog tag URL."
              },
              "postCount": {
                "type": "integer",
                "minimum": 0,
                "nullable": true
              }
            },
            "required": [
              "id",
              "slug",
              "name",
              "description",
              "featureImage",
              "url",
              "postCount"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      },
      "BlogPublicAuthorsListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Stable Ghost author identifier."
                },
                "slug": {
                  "type": "string",
                  "description": "Public author slug."
                },
                "name": {
                  "type": "string",
                  "description": "Public display name."
                },
                "bio": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public author biography."
                },
                "profileImage": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public author profile image URL."
                },
                "coverImage": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public author cover image URL."
                },
                "website": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public author website URL."
                },
                "location": {
                  "type": "string",
                  "nullable": true,
                  "description": "Public author location."
                },
                "url": {
                  "type": "string",
                  "description": "Canonical public blog author URL."
                },
                "postCount": {
                  "type": "integer",
                  "minimum": 0,
                  "nullable": true
                }
              },
              "required": [
                "id",
                "slug",
                "name",
                "bio",
                "profileImage",
                "coverImage",
                "website",
                "location",
                "url",
                "postCount"
              ],
              "additionalProperties": false
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "minimum": 0
              },
              "filters": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "count"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "BlogPublicAuthorResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Stable Ghost author identifier."
              },
              "slug": {
                "type": "string",
                "description": "Public author slug."
              },
              "name": {
                "type": "string",
                "description": "Public display name."
              },
              "bio": {
                "type": "string",
                "nullable": true,
                "description": "Public author biography."
              },
              "profileImage": {
                "type": "string",
                "nullable": true,
                "description": "Public author profile image URL."
              },
              "coverImage": {
                "type": "string",
                "nullable": true,
                "description": "Public author cover image URL."
              },
              "website": {
                "type": "string",
                "nullable": true,
                "description": "Public author website URL."
              },
              "location": {
                "type": "string",
                "nullable": true,
                "description": "Public author location."
              },
              "url": {
                "type": "string",
                "description": "Canonical public blog author URL."
              },
              "postCount": {
                "type": "integer",
                "minimum": 0,
                "nullable": true
              }
            },
            "required": [
              "id",
              "slug",
              "name",
              "bio",
              "profileImage",
              "coverImage",
              "website",
              "location",
              "url",
              "postCount"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "data"
        ],
        "additionalProperties": false
      }
    }
  }
}
