openapi: 3.1.0 info: title: Global Partners LP Media API version: wp/v2 summary: Media from the public WordPress REST API served by www.globalp.com. description: 'Published media library items (images, PDFs, documents). This contract was derived faithfully from Global Partners LP''s own live WordPress REST API discovery document at https://www.globalp.com/wp-json/ on 2026-09-12. Every path, method, parameter name, type, description, enum and default below is copied from that document; response schemas are inferred from the structure of real unauthenticated responses. Nothing is invented. Read operations on this collection are public and unauthenticated. Write operations are present in the provider''s route table but are capability-gated: an anonymous request returns HTTP 401 `rest_forbidden`. Global Partners publishes no developer program, no API keys and no API documentation; this is the site''s platform API, not a supported product.' contact: name: Global Partners LP url: https://www.globalp.com/contact-us termsOfService: https://www.globalp.com/terms-of-use x-generated: '2026-09-12' x-method: derived x-source: https://www.globalp.com/wp-json/ servers: - url: https://www.globalp.com/wp-json description: Production — www.globalp.com WordPress REST API tags: - name: media description: Published media library items (images, PDFs, documents). paths: /wp/v2/media: get: operationId: listMedia summary: List media description: Published media library items (images, PDFs, documents). tags: - media parameters: - name: context in: query required: false schema: type: string enum: - view - embed - edit default: view description: Scope under which the request is made; determines fields present in response. - name: page in: query required: false schema: type: integer default: 1 minimum: 1 description: Current page of the collection. - name: per_page in: query required: false schema: type: integer default: 10 minimum: 1 maximum: 100 description: Maximum number of items to be returned in result set. - name: search in: query required: false schema: type: string description: Limit results to those matching a string. - name: after in: query required: false schema: type: string format: date-time description: Limit response to posts published after a given ISO8601 compliant date. - name: modified_after in: query required: false schema: type: string format: date-time description: Limit response to posts modified after a given ISO8601 compliant date. - name: author in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to posts assigned to specific authors. - name: author_exclude in: query required: false schema: type: array default: [] items: type: integer description: Ensure result set excludes posts assigned to specific authors. - name: before in: query required: false schema: type: string format: date-time description: Limit response to posts published before a given ISO8601 compliant date. - name: modified_before in: query required: false schema: type: string format: date-time description: Limit response to posts modified before a given ISO8601 compliant date. - name: exclude in: query required: false schema: type: array default: [] items: type: integer description: Ensure result set excludes specific IDs. - name: include in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to specific IDs. - name: search_semantics in: query required: false schema: type: string enum: - exact description: How to interpret the search input. - name: offset in: query required: false schema: type: integer description: Offset the result set by a specific number of items. - name: order in: query required: false schema: type: string enum: - asc - desc default: desc description: Order sort attribute ascending or descending. - name: orderby in: query required: false schema: type: string enum: - author - date - id - include - modified - parent - relevance - slug - include_slugs - title default: date description: Sort collection by post attribute. - name: parent in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to items with particular parent IDs. - name: parent_exclude in: query required: false schema: type: array default: [] items: type: integer description: Limit result set to all items except those of a particular parent ID. - name: search_columns in: query required: false schema: type: array default: [] items: enum: - post_title - post_content - post_excerpt type: string description: Array of column names to be searched. - name: slug in: query required: false schema: type: array items: type: string description: Limit result set to posts with one or more specific slugs. - name: status in: query required: false schema: type: array default: inherit items: enum: - inherit - private - trash type: string description: Limit result set to posts assigned one or more statuses. - name: media_type in: query required: false schema: type: array items: type: string enum: - image - video - text - application - audio description: Limit result set to attachments of a particular media type or media types. - name: mime_type in: query required: false schema: type: array items: type: string description: Limit result set to attachments of a particular MIME type or MIME types. responses: '200': description: Success. content: application/json: schema: type: array items: $ref: '#/components/schemas/Media' headers: X-WP-Total: description: Total number of records in the collection. schema: type: integer X-WP-TotalPages: description: Total number of pages available at the current per_page size. schema: type: integer Link: description: RFC 8288 pagination links (rel="next" / rel="prev"). schema: type: string '400': description: Invalid parameter (rest_invalid_param). content: application/json: schema: $ref: '#/components/schemas/Error' post: operationId: createMedia summary: Create a media record description: Create a media record. Requires an authenticated WordPress user with the relevant capability; anonymous requests receive 401 rest_forbidden. tags: - media requestBody: required: true content: application/json: schema: type: object properties: date: type: string format: date-time description: The date the post was published, in the site's timezone. date_gmt: type: string format: date-time description: The date the post was published, as GMT. slug: type: string description: An alphanumeric identifier for the post unique to its type. status: type: string enum: - publish - future - draft - pending - private - acf-disabled description: A named status for the post. title: type: object description: The title for the post. author: type: integer description: The ID for the author of the post. featured_media: type: integer description: The ID of the featured media for the post. comment_status: type: string enum: - open - closed description: Whether or not comments are open on the post. ping_status: type: string enum: - open - closed description: Whether or not the post can be pinged. meta: type: object description: Meta fields. template: type: string description: The theme file to use to display the post. alt_text: type: string description: Alternative text to display when attachment is not displayed. caption: type: object description: The attachment caption. description: type: object description: The attachment description. post: type: integer description: The ID for the associated post of the attachment. security: - applicationPassword: [] responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/Media' '400': description: Invalid parameter (rest_invalid_param). content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Not authenticated, or the authenticated user lacks the capability (rest_forbidden). content: application/json: schema: $ref: '#/components/schemas/Error' /wp/v2/media/{id}: get: operationId: getMedia summary: Retrieve one media record description: Retrieve one media record. Requires an authenticated WordPress user with the relevant capability; anonymous requests receive 401 rest_forbidden. tags: - media parameters: - name: id in: path required: true schema: type: integer description: Unique identifier for the media. - name: context in: query required: false schema: type: string enum: - view - embed - edit default: view description: Scope under which the request is made; determines fields present in response. responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/Media' '400': description: Invalid parameter (rest_invalid_param). content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: No record matches the supplied identifier. content: application/json: schema: $ref: '#/components/schemas/Error' post: operationId: updateMedia summary: Update one media record description: Update one media record. Requires an authenticated WordPress user with the relevant capability; anonymous requests receive 401 rest_forbidden. tags: - media parameters: - name: id in: path required: true schema: type: integer description: Unique identifier for the media. requestBody: required: true content: application/json: schema: type: object properties: date: type: string format: date-time description: The date the post was published, in the site's timezone. date_gmt: type: string format: date-time description: The date the post was published, as GMT. slug: type: string description: An alphanumeric identifier for the post unique to its type. status: type: string enum: - publish - future - draft - pending - private - acf-disabled description: A named status for the post. title: type: object description: The title for the post. author: type: integer description: The ID for the author of the post. featured_media: type: integer description: The ID of the featured media for the post. comment_status: type: string enum: - open - closed description: Whether or not comments are open on the post. ping_status: type: string enum: - open - closed description: Whether or not the post can be pinged. meta: type: object description: Meta fields. template: type: string description: The theme file to use to display the post. alt_text: type: string description: Alternative text to display when attachment is not displayed. caption: type: object description: The attachment caption. description: type: object description: The attachment description. post: type: integer description: The ID for the associated post of the attachment. security: - applicationPassword: [] responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/Media' '400': description: Invalid parameter (rest_invalid_param). content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Not authenticated, or the authenticated user lacks the capability (rest_forbidden). content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: No record matches the supplied identifier. content: application/json: schema: $ref: '#/components/schemas/Error' delete: operationId: deleteMedia summary: Delete one media record description: Delete one media record. Requires an authenticated WordPress user with the relevant capability; anonymous requests receive 401 rest_forbidden. tags: - media parameters: - name: id in: path required: true schema: type: integer description: Unique identifier for the media. - name: force in: query required: false schema: type: boolean default: false description: Whether to bypass Trash and force deletion. security: - applicationPassword: [] responses: '200': description: Success. content: application/json: schema: $ref: '#/components/schemas/Media' '400': description: Invalid parameter (rest_invalid_param). content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Not authenticated, or the authenticated user lacks the capability (rest_forbidden). content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: No record matches the supplied identifier. content: application/json: schema: $ref: '#/components/schemas/Error' components: schemas: Error: type: object description: The WordPress REST API error envelope. properties: code: type: string description: Machine-readable error code, e.g. rest_forbidden, rest_post_invalid_id. message: type: string description: Human-readable error message. data: type: object properties: status: type: integer description: The HTTP status code. Media: type: object properties: id: type: integer date: type: string date_gmt: type: string guid: type: object properties: rendered: type: string modified: type: string modified_gmt: type: string slug: type: string status: type: string type: type: string link: type: string title: type: object properties: rendered: type: string author: type: integer featured_media: type: integer comment_status: type: string ping_status: type: string template: type: string meta: type: object properties: _acf_changed: type: boolean content-type: type: string class_list: type: array items: type: string acf: type: array items: {} description: type: object properties: rendered: type: string caption: type: object properties: rendered: type: string alt_text: type: string media_type: type: string mime_type: type: string media_details: type: object properties: width: type: integer height: type: integer file: type: string filesize: type: integer sizes: type: object properties: medium: type: object properties: file: type: string width: type: integer height: type: integer filesize: type: integer mime_type: type: string source_url: type: string thumbnail: type: object properties: file: type: string width: type: integer height: type: integer filesize: type: integer mime_type: type: string source_url: type: string full: type: object properties: file: type: string width: type: integer height: type: integer mime_type: type: string source_url: type: string image_meta: type: object properties: aperture: type: string credit: type: string camera: type: string caption: type: string created_timestamp: type: string copyright: type: string focal_length: type: string iso: type: string shutter_speed: type: string title: type: string orientation: type: string keywords: type: array items: {} alt: type: string post: type: integer source_url: type: string filename: type: string filesize: type: integer _links: type: object properties: self: type: array items: type: object properties: href: type: string targetHints: type: object properties: allow: {} collection: type: array items: type: object properties: href: type: string about: type: array items: type: object properties: href: type: string author: type: array items: type: object properties: embeddable: type: boolean href: type: string replies: type: array items: type: object properties: embeddable: type: boolean href: type: string wp:attached-to: type: array items: type: object properties: embeddable: type: boolean post_type: type: string id: type: integer href: type: string curies: type: array items: type: object properties: name: type: string href: type: string templated: type: boolean description: A Media record as returned by the public, unauthenticated collection endpoint. Structure derived from a live response on 2026-09-12; no values are reproduced. securitySchemes: applicationPassword: type: http scheme: basic description: WordPress application passwords (HTTP Basic). The site's discovery document advertises the authorization endpoint at https://www.globalp.com/wp-admin/authorize-application.php. Read operations require no credentials.