openapi: 3.2.0 info: title: Addis Energy Posts API version: wp/v2 description: 'Public, unauthenticated read access to the Addis Energy news and press-coverage archive (13 published posts at capture, across 3 categories) via the WordPress core REST API. Anonymous access is read-only: the collection answers `Allow: GET` without credentials. Write methods exist on the same routes but require WordPress application-password authentication and are not part of the public surface.' contact: name: Addis Energy url: https://addisenergy.com/contact/ x-derived-from: https://addisenergy.com/wp-json/ route index (218 routes across 9 namespaces, captured 2026-09-07) x-derived-on: '2026-09-07' x-api-evangelist-note: Third-party profile. Addis Energy publishes no developer program, no developer portal and no SDKs. This documents the anonymously readable WordPress core REST content API behind addisenergy.com. Every path, parameter and error shape here was read from the server's own published route-index document and verified against live anonymous responses on 2026-09-07 — nothing is invented. servers: - url: https://addisenergy.com/wp-json description: Addis Energy WordPress REST API tags: - name: Posts description: Addis Energy company news, announcements and press coverage. paths: /wp/v2/posts: get: operationId: listPosts summary: List posts description: Retrieve a paginated collection of published Addis Energy posts. Total count is returned in the `X-WP-Total` response header and page count in `X-WP-TotalPages`; both are exposed cross-origin via `Access-Control-Expose-Headers`. tags: - Posts parameters: - name: after in: query description: Limit response to posts published after a given ISO8601 compliant date. schema: type: string format: date-time - name: author in: query description: Limit result set to posts assigned to specific authors. schema: type: array items: type: integer default: [] - name: author_exclude in: query description: Ensure result set excludes posts assigned to specific authors. schema: type: array items: type: integer default: [] - name: before in: query description: Limit response to posts published before a given ISO8601 compliant date. schema: type: string format: date-time - name: categories in: query description: Limit result set to items with specific terms assigned in the categories taxonomy. schema: type: object - name: categories_exclude in: query description: Limit result set to items except those with specific terms assigned in the categories taxonomy. schema: type: object - name: context in: query description: Scope under which the request is made; determines fields present in response. schema: type: string enum: - view - embed - edit default: view - name: exclude in: query description: Ensure result set excludes specific IDs. schema: type: array items: type: integer default: [] - name: format in: query description: Limit result set to items assigned one or more given formats. schema: type: array items: type: string enum: - standard - aside - chat - gallery - link - image - quote - status - video - audio - name: ignore_sticky in: query description: Whether to ignore sticky posts or not. schema: type: boolean default: true - name: include in: query description: Limit result set to specific IDs. schema: type: array items: type: integer default: [] - name: modified_after in: query description: Limit response to posts modified after a given ISO8601 compliant date. schema: type: string format: date-time - name: modified_before in: query description: Limit response to posts modified before a given ISO8601 compliant date. schema: type: string format: date-time - name: offset in: query description: Offset the result set by a specific number of items. schema: type: integer - name: order in: query description: Order sort attribute ascending or descending. schema: type: string enum: - asc - desc default: desc - name: orderby in: query description: Sort collection by post attribute. schema: type: string enum: - author - date - id - include - modified - parent - relevance - slug - include_slugs - title default: date - name: page in: query description: Current page of the collection. schema: type: integer default: 1 minimum: 1 - name: per_page in: query description: Maximum number of items to be returned in result set. schema: type: integer default: 10 minimum: 1 maximum: 100 - name: search in: query description: Limit results to those matching a string. schema: type: string - name: search_columns in: query description: Array of column names to be searched. schema: type: array items: type: string enum: - post_title - post_content - post_excerpt default: [] - name: search_semantics in: query description: How to interpret the search input. schema: type: string enum: - exact - name: slug in: query description: Limit result set to posts with one or more specific slugs. schema: type: array items: type: string - name: status in: query description: Limit result set to posts assigned one or more statuses. schema: type: array items: type: string enum: - publish - future - draft - pending - private - trash - auto-draft - inherit - request-pending - request-confirmed - request-failed - request-completed - acf-disabled - flamingo-spam - any default: publish - name: sticky in: query description: Limit result set to items that are sticky. schema: type: boolean - name: tags in: query description: Limit result set to items with specific terms assigned in the tags taxonomy. schema: type: object - name: tags_exclude in: query description: Limit result set to items except those with specific terms assigned in the tags taxonomy. schema: type: object - name: tax_relation in: query description: Limit result set based on relationship between multiple taxonomies. schema: type: string enum: - AND - OR responses: '200': description: A collection of posts. content: application/json: schema: type: array items: $ref: '#/components/schemas/Post' '400': &id001 description: Invalid parameter. content: application/json: schema: $ref: '#/components/schemas/WPError' '404': &id002 description: No route or resource matched the request. content: application/json: schema: $ref: '#/components/schemas/WPError' /wp/v2/posts/{id}: get: operationId: getPost summary: Get a post description: Retrieve a single published post by its numeric identifier. tags: - Posts parameters: - name: id in: path required: true description: Unique identifier for the post. schema: type: integer - name: context in: query description: Scope under which the request is made; determines fields present in response. schema: type: string enum: - view - embed - edit default: view - name: excerpt_length in: query description: Override the default excerpt length. schema: type: integer - name: password in: query description: The password for the post if it is password protected. schema: type: string responses: '200': description: A single post. content: application/json: schema: $ref: '#/components/schemas/Post' '400': *id001 '404': *id002 components: schemas: WPError: type: object description: The WordPress REST error envelope returned on every 4xx/5xx. Observed live on 2026-09-07. properties: code: type: string description: Machine-readable error slug, e.g. rest_post_invalid_page_number. examples: - rest_no_route message: type: string description: Human-readable message. examples: - No route was found matching the URL and request method. data: type: object description: Error detail; always carries the HTTP status. properties: status: type: integer examples: - 404 required: - code - message - data Post: type: object description: A published Addis Energy news item or press-coverage post. properties: id: type: integer description: Unique identifier for the post. 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. guid: type: object properties: &id003 rendered: type: string description: The globally unique identifier for the post. modified: type: string format: date-time modified_gmt: type: string format: date-time slug: type: string description: An alphanumeric identifier for the post unique to its type. status: type: string enum: - publish description: Anonymous requests only ever see `publish`. type: type: string examples: - post link: type: string format: uri description: URL to the post on addisenergy.com. title: type: object properties: *id003 description: The title for the post. content: type: object properties: *id003 description: The content for the post. excerpt: type: object properties: *id003 description: The excerpt 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. categories: type: array items: type: integer description: The terms assigned to the post in the category taxonomy. tags: type: array items: type: integer _links: type: object description: HAL-style link relations to related resources.