openapi: 3.2.0 info: title: Forem API V1 Request Redirects API version: 1.0.0 description: Access Forem articles, users and other resources via API. servers: - url: https://dev.to description: Production server security: - api-key: [] - bearer_auth: [] tags: - name: request_redirects paths: /api/admin/request_redirects: get: summary: Retrieve all request redirects (Admin) tags: - request_redirects description: 'Retrieve a list of all request redirects configured on the platform. ### Redirects Overview: - Redirects map incoming HTTP request paths or domains to specific target destination URLs (301 or 302 redirects). - Primarily used for managing vanity URLs, legacy path support, or domain migrations. - Requires Administrator privileges.' parameters: - name: page in: query required: false description: Pagination page index. schema: type: integer - name: per_page in: query required: false description: Number of items to return per page. schema: type: integer responses: '200': description: successful content: application/json: schema: type: array items: $ref: '#/components/schemas/RequestRedirect' operationId: getApiAdminRequestRedirects x-operation-id-source: derived post: summary: Create a request redirect (Admin) tags: - request_redirects description: 'Create a new request redirect route. Requires Administrator privileges. ### Body Parameter Guidelines: - **original_url**: The source path (e.g. `/old-page`) to intercept. - **destination_url**: The target destination (e.g. `https://myforem.com/new-page`) to redirect users to. - **request_domain**: The domain scope (e.g. `dev.to`) where this redirect rule applies.' parameters: [] responses: '201': description: created content: application/json: schema: $ref: '#/components/schemas/RequestRedirect' requestBody: content: application/json: schema: type: object properties: request_redirect: type: object properties: original_url: type: string destination_url: type: string request_domain: type: string required: - original_url - destination_url - request_domain description: Redirect routing parameters. operationId: postApiAdminRequestRedirects x-operation-id-source: derived /api/admin/request_redirects/{id}: get: summary: Retrieve a request redirect's details (Admin) tags: - request_redirects description: Retrieve details of a single request redirect route by ID. Requires Admin credentials. parameters: - name: id in: path required: true description: Unique redirect ID. schema: type: integer responses: '200': description: successful content: application/json: schema: $ref: '#/components/schemas/RequestRedirect' operationId: getApiAdminRequestRedirectsById x-operation-id-source: derived patch: summary: Update a request redirect (Admin) tags: - request_redirects description: Update details (paths or domain scope) of an existing redirect route by ID. Requires Admin credentials. parameters: - name: id in: path required: true description: Unique redirect ID to update. schema: type: integer responses: '200': description: successful content: application/json: schema: $ref: '#/components/schemas/RequestRedirect' requestBody: content: application/json: schema: type: object properties: request_redirect: type: object properties: original_url: type: string destination_url: type: string request_domain: type: string description: Updated redirect routing parameters. operationId: patchApiAdminRequestRedirectsById x-operation-id-source: derived delete: summary: Delete a request redirect (Admin) tags: - request_redirects description: Delete a request redirect route, disabling the routing intercept immediately. Requires Admin credentials. parameters: - name: id in: path required: true description: Unique redirect ID to delete. schema: type: integer responses: '204': description: no content operationId: deleteApiAdminRequestRedirectsById x-operation-id-source: derived components: schemas: RequestRedirect: description: Representation of a request redirect type: object properties: id: type: integer format: int64 original_url: type: string destination_url: type: string request_domain: type: string created_at: type: string format: date-time updated_at: type: string format: date-time required: - id - original_url - destination_url - request_domain - created_at - updated_at securitySchemes: api-key: type: apiKey name: api-key in: header description: "API Key authentication.\n\nAuthentication for some endpoints, like write operations on the\nArticles API require a DEV API key.\n\nAll authenticated endpoints are CORS disabled, the API key is intended for non-browser scripts.\n\n### Getting an API key\n\nTo obtain one, please follow these steps:\n\n - visit https://dev.to/settings/extensions\n - in the \"DEV API Keys\" section create a new key by adding a\n description and clicking on \"Generate API Key\"\n\n ![obtain a DEV API Key](https://user-images.githubusercontent.com/37842/172718105-bd93664e-76e0-477d-99c4-265dda0b06c5.png)\n\n - You'll see the newly generated key in the same view\n ![generated DEV API Key](https://user-images.githubusercontent.com/37842/172718151-e7fe26a0-9937-42e8-96c6-333acdab9e49.png)" bearer_auth: type: http scheme: bearer bearerFormat: JWT description: Short-lived RS256 RFC 9068 access token issued by the configured delegation service and verified against its configured JWKS. The issuer authorizes the client and requested operation before minting the token; Forem validates the token and resolves its subject and owner to a local user. An invalid token returns 401; an unavailable trust dependency with no usable cached key returns 503.