openapi: 3.2.0 info: title: Revinate Porter Languages API version: '1.0' description: 'Revinate''s structured review data API. Provides access to hotel reviews across 100+ review sites, with key metrics (review counts, average ratings), sentiment analysis, competitor review streams and survey email statistics. Two review streams exist and they are not interchangeable: the Review Stream (/reviews, /hotels/{hotelId}/reviews) is for offline analysis and its content may NOT be used for display, while the Widget Review Stream (/widgetreviews) is licensed for display/republishing but excludes TripAdvisor and Yelp content under content-licensing agreements with those partners. CONVERSION NOTE: Revinate publishes this contract as Swagger 1.2 at https://porter.revinate.com/api-docs. This OpenAPI 3.1.0 document is a faithful mechanical conversion of the six published Swagger 1.2 resource declarations by API Evangelist; the verbatim originals are preserved in openapi/_original/. Operation IDs were made unique (the published nickname "get" is reused across all six resources).' contact: name: Revinate Support email: support@revinate.com url: https://www.revinate.com/support/ license: name: Revinate API License url: https://www.revinate.com/website-terms-of-use/ servers: - url: https://porter.revinate.com description: Revinate Porter API production base URL security: - porterUsername: [] porterTimestamp: [] porterKey: [] porterEncoded: [] tags: - name: Languages paths: /languages: get: tags: - Languages summary: Get Languages description: Retrieve a list view of languages supported on the review stream. This resource supports pagination. Moreover, the slug field returned can be used as a filter on the '/reviews' resource to only return reviews with the given language operationId: listLanguages parameters: - name: page in: query required: false description: page number schema: type: integer description: page number - name: size in: query required: false description: number of elements to show per page schema: type: integer description: number of elements to show per page - name: sort in: query required: false description: sort field and direction (eg. ?sort=name,ASC) schema: type: string description: sort field and direction (eg. ?sort=name,ASC) responses: '200': description: OK '401': description: Unauthorized '403': description: Forbidden '404': description: Not Found security: - porterUsername: [] porterTimestamp: [] porterKey: [] porterEncoded: [] /languages/{languageId}: get: tags: - Languages summary: Get a Language description: Retrieve a language resource by primary language id. operationId: getLanguage parameters: - name: languageId in: path required: true description: identifier of Language schema: type: integer format: int64 description: identifier of Language responses: '200': description: OK '401': description: Unauthorized '403': description: Forbidden '404': description: Not Found security: - porterUsername: [] porterTimestamp: [] porterKey: [] porterEncoded: [] components: securitySchemes: porterUsername: type: apiKey in: header name: X-Revinate-Porter-Username description: Username with access to the requested resources and to the API key used. porterTimestamp: type: apiKey in: header name: X-Revinate-Porter-Timestamp description: Epoch-seconds timestamp; must be within 5 minutes (before or after) of the request. porterKey: type: apiKey in: header name: X-Revinate-Porter-Key description: API key issued by Revinate (contact your sales rep or account manager). porterEncoded: type: apiKey in: header name: X-Revinate-Porter-Encoded description: HMAC_SHA256(apiSecret, username + timestamp), hex-encoded.