|  | swagger: '2.0' | 
|  |  | 
|  | info: | 
|  | version: "0.0.1" | 
|  | title: changeserver | 
|  | description: | 
|  | Changeserver consumes changes from a Postgres replication scheme created | 
|  | by the "transicator_output" plugin and makes them available to consumers | 
|  | via an API. The API supports long polling so that a large number of | 
|  | consumers may be notified of changes. | 
|  | contact: | 
|  | name: Apigee, Inc. | 
|  | url: http://www.apigee.com/ | 
|  | email: sales@apigee.com | 
|  | license: | 
|  | name: Apache 2.0 | 
|  | url: https://www.apache.org/licenses/LICENSE-2.0 | 
|  |  | 
|  | paths: | 
|  | /changes: | 
|  | get: | 
|  | description: | 
|  | Retrieve a list of changes. The query parameters may be used to | 
|  | restrict the number of changes that are retrieved or return | 
|  | only changes since a particular sequence. In addition, it | 
|  | is possible to block (aka "long poll") until a new matching | 
|  | change is available. The result will be produced in JSON format | 
|  | unless the Accept header is used to select the protobuf format. | 
|  | produces: | 
|  | - application/json | 
|  | - application/transicator+protobuf | 
|  | parameters: | 
|  | - name: scope | 
|  | in: query | 
|  | description: | 
|  | The scope limits the changes that are returned. It is | 
|  | extracted from a database column whenever a change is | 
|  | made. Every call to this API must contain at least one | 
|  | scope. Multiple "scope" parameters may also be used. | 
|  | if more than one "scope" is included, then the operation | 
|  | is treated as an "OR" of all the scopes, and the results | 
|  | are sorted by sequence regardless of scope. | 
|  | required: true | 
|  | type: string | 
|  | - name: selector | 
|  | in: query | 
|  | description: | 
|  | Alias for "scope" query parameter with the same usage. | 
|  | Completely interchangeable with "scope", which is no longer | 
|  | required if "selector" param is present. | 
|  | required: false | 
|  | type: string | 
|  | - name: snapshot | 
|  | in: query | 
|  | description: | 
|  | If specified, then this must be set to a "snapshot ID" from Postgres. | 
|  | This will be in the format "xmin:xmax:xip1,xip2,...xipN" and is | 
|  | normally returned by executing "select txid_current_snapshot()". | 
|  | By including this parameter, the change list will never include | 
|  | any data that would be *visible* in the specified snapshot. | 
|  | So in other words, if the value of this parameter comes from | 
|  | a Postgres query executed during a transaction, then the | 
|  | change server will not return any database changes that | 
|  | were already in the snapshot. | 
|  | required: false | 
|  | type: string | 
|  | - name: since | 
|  | in: query | 
|  | description: | 
|  | The value of "sequence" from a previous invocation of | 
|  | this API. If so specified, this API will only return changes | 
|  | that happened after the change with the specified sequence. | 
|  | Otherwise, this API will return changes since the | 
|  | beginning. If this parameter is specified, but the specified | 
|  | sequence no longer exists in the database, then a 400 | 
|  | error and the error code "SNAPSHOT_TOO_OLD" will be | 
|  | returned. | 
|  | required: false | 
|  | type: string | 
|  | - name: limit | 
|  | in: query | 
|  | description: | 
|  | Limit the number of changes returned by a single API | 
|  | call. The default limit is 100. | 
|  | required: false | 
|  | type: integer | 
|  | - name: block | 
|  | in: query | 
|  | description: | 
|  | If specified, this sets the number of seconds that the API | 
|  | call will block if there are no changes available since the | 
|  | "since" value for the set of specified scopes. In the | 
|  | event that there are no changes available when the API call | 
|  | is made, the API will block for the specified number of | 
|  | seconds until a matching change appears. If no changes | 
|  | appear in the specified number of seconds, then an | 
|  | empty change list will be returned. | 
|  | required: false | 
|  | type: integer | 
|  |  | 
|  | responses: | 
|  | 200: | 
|  | description: Successful response | 
|  | schema: | 
|  | $ref: '#/definitions/ChangeList' | 
|  | 400: | 
|  | description: Invalid input. Error "code" will tell why. | 
|  | a code of "SNAPSHOT_TOO_OLD" means that records dating | 
|  | back to the "since" parameter are not available. | 
|  | schema: | 
|  | $ref: '#/definitions/Error' | 
|  |  | 
|  | /health: | 
|  | get: | 
|  | description: | 
|  | Describes whether the server is "healthy." When the | 
|  | server is not healthy, it is not able to process any requests, and | 
|  | should be killed and restarted. | 
|  | If the server was started with a | 
|  | management port enabled, this URL only resolves on that | 
|  | port. | 
|  | produces: | 
|  | - text/plain | 
|  | - application/json | 
|  | responses: | 
|  | 200: | 
|  | description: Everything is fine. No output produced. | 
|  | 503: | 
|  | description: | 
|  | Server is not healthy. Normally returns the status in textual | 
|  | form, but if JSON is selected in the Accept header than | 
|  | JSON will be returned. | 
|  | schema: | 
|  | $ref: '#/definitions/Status' | 
|  |  | 
|  | /ready: | 
|  | get: | 
|  | description: | 
|  | Describes whether the server is "ready." When the | 
|  | server is not ready, it is not able to process any requests. | 
|  | Load balancers should not route calls to a server that is | 
|  | not ready. The server may not be ready because it is still | 
|  | starting up, or because it is shutting down. It is possible | 
|  | for a server to be "ready" but still "healthy." | 
|  | If the server was started with a | 
|  | management port enabled, this URL only resolves on that | 
|  | port. | 
|  | produces: | 
|  | - text/plain | 
|  | - application/json | 
|  | responses: | 
|  | 200: | 
|  | description: Everything is fine. No output produced. | 
|  | 503: | 
|  | description: | 
|  | Server is not ready. Normally returns the status in textual | 
|  | form, but if JSON is selected in the Accept header than | 
|  | JSON will be returned. | 
|  | schema: | 
|  | $ref: '#/definitions/Status' | 
|  |  | 
|  | /markdown: | 
|  | get: | 
|  | description: | 
|  | Changes the state of the server to denote that it has been | 
|  | marked down. After this is called, the "/ready" path will return | 
|  | 503, and all other API calls except "/health" will also fail with | 
|  | 503. | 
|  | After this API call has been made, the server will delete its | 
|  | Postgres replication slot when it exits. Management software | 
|  | should call this URL before a planned shutdown to ensure | 
|  | cleanup of Postgres resources. | 
|  | If the server was started with a | 
|  | management port enabled, this URL only resolves on that | 
|  | port. | 
|  | responses: | 
|  | 200: | 
|  | description: Server is now marked down | 
|  |  | 
|  | definitions: | 
|  | Value: | 
|  | description: | 
|  | The value of a row in the "newRow" or "oldRow" property | 
|  | of a change. | 
|  | required: | 
|  | - value | 
|  | - type | 
|  | properties: | 
|  | value: | 
|  | description: The row value in string form | 
|  | type: string | 
|  | type: | 
|  | description: The Postgres numeric type of the field | 
|  | type: integer | 
|  |  | 
|  | Change: | 
|  | description: A single change. | 
|  | properties: | 
|  | operation: | 
|  | description: | 
|  | The type of change. | 
|  | "1" denotes an insert. | 
|  | "2" denotes an update. | 
|  | "3" denotes a delete. | 
|  | type: integer | 
|  | enum: | 
|  | - 1 | 
|  | - 2 | 
|  | - 3 | 
|  | table: | 
|  | description: The name of the database table that was changed. | 
|  | type: string | 
|  | sequence: | 
|  | description: | 
|  | The unique, ordered identifier of the change in the list of | 
|  | changes. | 
|  | type: string | 
|  | commitSequence: | 
|  | description: | 
|  | The order of this transaction's commit in the list of changes. | 
|  | type: integer | 
|  | format: int64 | 
|  | changeSequence: | 
|  | description: | 
|  | The order of this change in the list of changes. Since | 
|  | transactions commit in different orders, changes are not | 
|  | necessarily shown in this order | 
|  | type: integer | 
|  | format: int64 | 
|  | commitIndex: | 
|  | description: | 
|  | The order of this change in the list of changes for a | 
|  | particular transaction. When multiple changes are made in | 
|  | a transaction, they have the same commitSequence but | 
|  | different values of commitIndex. | 
|  | type: integer | 
|  | format: int64 | 
|  | txid: | 
|  | description: | 
|  | The database transaction ID for this change | 
|  | type: integer | 
|  | format: int64 | 
|  | newRow: | 
|  | description: | 
|  | The new value of the row for an insert or update operation. | 
|  | The fields in the object are named after the fields in the | 
|  | row, and each field's value is a "Value" object. | 
|  | type: object | 
|  | oldRow: | 
|  | description: | 
|  | The old value of the row for a delete or update operation. | 
|  | type: object | 
|  |  | 
|  | ChangeList: | 
|  | description: A set of changes. | 
|  | properties: | 
|  | firstSequence: | 
|  | description: The oldest sequence present in the databse | 
|  | type: string | 
|  | lastSequence: | 
|  | description: The newest sequence present in the databse | 
|  | type: string | 
|  | changes: | 
|  | description: A list of changes, in sequence order. | 
|  | type: array | 
|  | items: | 
|  | $ref: '#/definitions/Change' | 
|  |  | 
|  | Status: | 
|  | description: A response sent by a server that has been marked down. | 
|  | required: | 
|  | - status | 
|  | - reason | 
|  | properties: | 
|  | reason: | 
|  | description: | 
|  | The reason that a server has been marked down. Suitable for | 
|  | writing in to logs and diagnostic errors. | 
|  | type: string | 
|  | status: | 
|  | description: | 
|  | If the server has been marked down, a reason why. | 
|  | One of "Unhealtly" or "NotReady". | 
|  |  | 
|  | Error: | 
|  | description: An error in processing by the server. | 
|  | required: | 
|  | - code | 
|  | - error | 
|  | properties: | 
|  | code: | 
|  | description: A short symbolic description of the error | 
|  | type: string | 
|  | error: | 
|  | description: A short description of the error | 
|  | type: string | 
|  | description: | 
|  | description: A longer description of the error | 
|  | type: string | 
|  |  |