openapi: 3.1.0 info: title: Gotham Greens oEmbed API version: oembed/1.0 summary: oEmbed 1.0 provider endpoint for gothamgreens.com URLs. description: >- Gotham Greens acts as an oEmbed provider for its own URLs through the WordPress core oEmbed controller. Given any gothamgreens.com post or page URL, the endpoint returns oEmbed 1.0 rich metadata — provider name, author, title, thumbnail and an embeddable iframe. Verified live with an anonymous probe returning HTTP 200 for https://www.gothamgreens.com/our-story/. contact: name: Gotham Greens url: https://www.gothamgreens.com/contact/ license: name: Site content — all rights reserved, see Terms of Use url: https://www.gothamgreens.com/terms-of-use/ x-apis-io-provenance: method: derived source: https://www.gothamgreens.com/wp-json/ derived_on: '2026-08-01' note: >- Routes enumerated from the live wp-json discovery document (406 routes across 17 namespaces); each operation below was probed anonymously and returned HTTP 200. Schemas reflect the fields observed in live responses on 2026-08-01. No fabricated operations. servers: - url: https://www.gothamgreens.com/wp-json description: Production tags: - name: oEmbed description: oEmbed 1.0 discovery for Gotham Greens site URLs. paths: /oembed/1.0/embed: get: tags: - oEmbed operationId: getOembed summary: Get oEmbed data for a site URL description: >- Returns oEmbed 1.0 metadata for a gothamgreens.com URL. Non-Gotham-Greens URLs are rejected. parameters: - name: url in: query required: true description: The gothamgreens.com URL to retrieve embed information for. schema: type: string format: uri - name: format in: query description: The oEmbed response format. schema: type: string enum: [json, xml] default: json - name: maxwidth in: query description: Maximum width of the embed frame in pixels. schema: type: integer default: 600 responses: '200': description: oEmbed 1.0 response. content: application/json: schema: $ref: '#/components/schemas/OembedResponse' '404': $ref: '#/components/responses/NotFound' components: parameters: id: name: id in: path required: true description: Unique numeric identifier for the object. schema: type: integer page: name: page in: query description: Current page of the collection. Defaults to 1. schema: type: integer minimum: 1 default: 1 perPage: name: per_page in: query description: >- Maximum number of items to be returned in the result set. Verified live: values outside 1-100 return HTTP 400 `rest_invalid_param`. schema: type: integer minimum: 1 maximum: 100 default: 10 search: name: search in: query description: Limit results to those matching a string. schema: type: string order: name: order in: query description: Order sort attribute ascending or descending. schema: type: string enum: [asc, desc] orderby: name: orderby in: query description: Sort collection by object attribute. schema: type: string context: name: context in: query description: >- Scope under which the request is made; determines fields present in the response. Only `view` and `embed` are available anonymously. schema: type: string enum: [view, embed] default: view headers: XWPTotal: description: Total number of items in the collection. schema: type: integer XWPTotalPages: description: Total number of pages in the collection at the current per_page. schema: type: integer LinkPagination: description: RFC 8288 Link header carrying `next` and `prev` pagination relations. schema: type: string responses: NotFound: description: The requested object does not exist. content: application/json: schema: $ref: '#/components/schemas/Error' example: code: rest_no_route message: No route was found matching the URL and request method. data: status: 404 InvalidParam: description: One or more query parameters failed validation. content: application/json: schema: $ref: '#/components/schemas/Error' example: code: rest_invalid_param message: 'Invalid parameter(s): per_page' data: status: 400 params: per_page: per_page must be between 1 (inclusive) and 100 (inclusive) Unauthorized: description: >- The route exists but is not readable anonymously. Verified live on the users, settings, themes, plugins, menus, block-types and revisions routes. content: application/json: schema: $ref: '#/components/schemas/Error' example: code: rest_forbidden message: Sorry, you are not allowed to do that. data: status: 401 schemas: RenderedText: type: object description: WordPress rendered-text object. properties: rendered: type: string required: [rendered] Error: type: object description: >- The WordPress REST error envelope, verified live. Note this is NOT RFC 9457 application/problem+json — it is served as application/json with a WordPress-specific shape. properties: code: type: string message: type: string data: type: object properties: status: type: integer params: type: object additionalProperties: type: string details: type: object additionalProperties: true required: [status] required: [code, message, data] OembedResponse: type: object description: An oEmbed 1.0 rich response. properties: version: type: string const: '1.0' provider_name: type: string provider_url: type: string format: uri author_name: type: string author_url: type: string format: uri title: type: string type: type: string width: type: integer height: type: [integer, 'null'] html: type: string description: The embeddable HTML iframe. thumbnail_url: type: string format: uri thumbnail_width: type: integer thumbnail_height: type: integer required: [version, provider_name, provider_url, type]