| swagger: "2.0" |
| info: |
| version: "0.0.1" |
| title: snapshotserver |
| description: |
| The Snapshot server produces a consistent view of data in a Postgres database |
| for a set of "scopes." Each scope is a unique string identified by a column |
| called "_apid_scope" in each table. Tables with no such column are |
| ignored. |
| 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 |
| |
| consumes: |
| - application/json |
| produces: |
| - application/json |
| paths: |
| /snapshots: |
| get: |
| summary: Get data for a particular snapshot |
| description: |
| Generate and create the data for a snapshot. The snapshot will contain |
| data from all tables in the current database and schema that has a |
| column named "_apid_scope" that matches one of the "scope" values. |
| The generated snapshot includes JSON data by default. The "Accept" header |
| may be used to request data in protocol buffer format. |
| produces: |
| - application/json |
| - application/transicator+protobuf |
| |
| parameters: |
| - name: scope |
| in: query |
| required: true |
| type: string |
| description: |
| The "scope" field represents a unique identifier that is required in |
| order to generate a snapshot. The snapshot will contain data from all |
| tables that have an "_apid_scope" column that matches the value. |
| At least one scope must be included. If multiple scopes are included, |
| then the result is treated as an "OR" of all the scopes. |
| - 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: scopes |
| in: query |
| required: false |
| type: string |
| description: |
| This parameter contains a comma-separated list of scopes. |
| It was used in previous releases of the API and will be removed on |
| a future date. |
| responses: |
| '303': |
| description: |
| This the normal response to this API. It will immediately redirect |
| the client to the location of the generated snapshot. |
| headers: |
| Location: |
| description: URL to redirect to |
| type: string |
| |
| /data/{snapshotId}: |
| parameters: |
| - name: snapshotId |
| in: path |
| required: true |
| description: Unique identifier of a set of snapshot data |
| type: string |
| get: |
| summary: Download snapshot data file |
| description: |
| This is the API that is directed to by the "/snapshots" API. Users should |
| not call it directly. |
| produces: |
| - application/json |
| - application/transicator+protobuf |
| responses: |
| '200': |
| description: "Snapshot data download" |
| schema: |
| $ref: '#/definitions/Snapshot' |
| |
| /scopes/{apidConfigID}: |
| get: |
| summary: Get list of scopes for a config |
| description: |
| This API downloads the list of scopes that a particular instance of the |
| apid configuration requires. This API may be removed in a future release |
| in favor of re-using the existing snapshot mechanism. |
| parameters: |
| - name: apidConfigID |
| in: path |
| required: true |
| type: string |
| description: |
| The unique identifier of an API configuration object that the caller is |
| authorized to see. |
| responses: |
| '200': |
| description: Configuration downlaod |
| schema: |
| $ref: '#/definitions/Snapshot' |
| |
| /snapshotjobs: |
| post: |
| summary: Request a new snapshot job |
| description: |
| This API is a placeholder for a future API that will allow a client to request |
| asynchronous creation of a snapshot that may be consumed later. |
| responses: |
| default: |
| description: Error |
| schema: |
| $ref: "#/definitions/ErrorResponse" |
| |
| /snapshotjobs/{jobId}: |
| get: |
| summary: Get snapshot jobs info on status and metadata |
| description: |
| This API is a placeholder for a future API that will allow a client to poll |
| for the status of a previously-requested asynchronous snapshot. |
| parameters: |
| - name: jobId |
| in: path |
| required: true |
| type: string |
| responses: |
| default: |
| description: Error |
| schema: |
| $ref: "#/definitions/ErrorResponse" |
| |
| /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. |
| 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 "rows" property of a table. |
| 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 |
| Row: |
| description: |
| A single row in the table. Keys are field names and values are |
| Value objects. |
| additionalProperties: |
| $ref: '#/definitions/Value' |
| Table: |
| description: The snapshot of a single database table |
| properties: |
| name: |
| description: The name of the table |
| type: string |
| rows: |
| type: array |
| items: |
| $ref: '#/definitions/Row' |
| Snapshot: |
| description: A snapshot of the state of the database for a set of scopes. |
| properties: |
| snapshotInfo: |
| description: |
| The Postgres transaction IDs at the time when the snapshot was |
| created. Should be passed as the "snaphot" parameter to the change |
| server to result in a consistent set of changes. |
| type: string |
| timestamp: |
| description: The time that the snapshot was generated, in Postgres format |
| type: string |
| tables: |
| description: The tables represented in the snapshot |
| type: array |
| items: |
| $ref: '#/definitions/Table' |
| |
| ErrorResponse: |
| required: |
| - message |
| properties: |
| message: |
| type: string |
| |
| 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". |