WDK Rest Service (3.0)

//{siteUrl}/{webApp}/service

Table of contents

/

GET /

Get basic information about the WDK service.

GET /

Response 200

success response

Body

Media type: application/json

Type:

{
  "type": "object",
  "properties": {
    "changePasswordUrl": {
      "type": "string"
    },
    "releaseDate": {
      "type": "string",
      "examples": [
        "1 January 1900 00:00"
      ]
    },
    "displayName": {
      "type": "string",
      "examples": [
        "PlasmoDB"
      ]
    },
    "userDatasetStoreStatus": {
      "type": "object",
      "properties": {
        "isAvailable": {
          "type": "boolean"
        }
      }
    },
    "categoriesOntologyName": {
      "type": "string",
      "examples": [
        "Categories"
      ]
    },
    "description": {
      "type": "string",
      "examples": [
        "Welcome to the WDK 3.0 Web Service"
      ]
    },
    "startupTime": {
      "type": "integer",
      "examples": [
        1534167789601
      ]
    },
    "projectId": {
      "type": "string",
      "examples": [
        "PlasmoDB"
      ]
    },
    "buildNumber": {
      "type": "string",
      "examples": [
        "38"
      ]
    },
    "userProfileProperties": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "isRequired": {
            "type": "boolean",
            "examples": [
              true
            ]
          },
          "displayName": {
            "type": "string",
            "examples": [
              "First Name"
            ]
          },
          "name": {
            "type": "string",
            "examples": [
              "firstName"
            ]
          },
          "isPublic": {
            "type": "boolean",
            "examples": [
              true
            ]
          }
        }
      }
    },
    "authentication": {
      "type": "object",
      "properties": {
        "oauthUrl": {
          "type": "string",
          "examples": [
            ""
          ]
        },
        "method": {
          "type": "string",
          "examples": [
            "USER_DB"
          ]
        },
        "oauthClientId": {
          "type": "string",
          "examples": [
            ""
          ]
        },
        "oauthClientUrl": {
          "type": "string",
          "examples": [
            "http://plasmodb.vm.ebrc.org/plasmo.vm/service"
          ]
        }
      }
    }
  }
}

Client Errors

POST /client-errors

Log a client side error.

POST /client-errors
Body

Media type: application/json

Type: any

Response 204

No content

Response 406

Not Acceptable

Login

GET /login

GET /login

POST /login

POST /login
Body

Media type: application/json

Type: any

GET /login/verification

GET /login/verification

Logout

GET /logout

Logs the current user out and adds them to a guest session.

GET /logout

OAuth

GET /oauth/state-token

Create an anti-forgery state token, add to the session, and return. This is requested by the client when the user tries to log in using an OAuth2 server. The value generated will be used to check the state token passed to the oauth processing action. They must match for the login to succeed. A new value is generated each time. All but one of "overlapping" login attempts by the same user will thus fail.

GET /oauth/state-token

Response 200

Success

Body

Media type: application/json

Type: any

Ontologies

GET /ontologies

GET /ontologies

GET /ontologies/{ontologyName}

Get the details of the specified ontology.

GET /ontologies/{ontologyName}
URI Parameters
  • ontologyName: required (string)

Response 200

Sucess

Body

Media type: application/json

Type: any

POST /ontologies/{ontologyName}/filteredOntologyTerms

(This should be changed to a GET.) Get a report of ontology terms, each shown as a path indicating the term's place in the ontology tree. The filters are key-value pairs that are applied to the Properties of each term. Terms that match the provided filters exactly are returned.

POST /ontologies/{ontologyName}/filteredOntologyTerms
URI Parameters
  • ontologyName: required (string)
Body

Media type: application/json

Type: any

Response 200

Success

Body

Media type: application/json

Type: any

Record Types

GET /record-types

Get a listing of supported record types, either in summary or detail. Each Record Type describes one of the (potentially many) types of records that are available through the API . Each Record Type includes a set of records of that type, and a set of searches that return different sets of those records. The sets of records and searches are available in sub-endpoints. Record types, and their records and searches, are the primary means of accessing data through this API. Individual records serve their data through "attributes," which are single-valued (e.g. "age") and "tables," which are multi-valued (e.g. "friends").

GET /record-types
Query Parameters
  • format: required ((optional) if omitted or not equal to "expanded", just return an array of record type names (url segments). If "expanded", return full details of each record type, as well as full details of all searches, and available reports. This is the only endpoint that offers a full listing of record types, searches and reports.)
Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-04/schema",
  "oneOf": [
    {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    {
      "type": "array",
      "items": {
        "type": "object",
        "definitions": {
          "properties": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "required": [
          "urlSegment",
          "useBasket",
          "formats",
          "hasAllRecordsQuery",
          "displayName",
          "description",
          "shortDisplayName",
          "shortDisplayNamePlural",
          "tables",
          "displayNamePlural",
          "fullName",
          "attributes",
          "primaryKeyColumnRefs",
          "searches"
        ],
        "additionalProperties": false,
        "properties": {
          "fullName": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "displayNamePlural": {
            "type": "string"
          },
          "shortDisplayName": {
            "type": "string"
          },
          "shortDisplayNamePlural": {
            "type": "string"
          },
          "nativeDisplayName": {
            "type": "string"
          },
          "nativeDisplayNamePlural": {
            "type": "string"
          },
          "nativeShortDisplayName": {
            "type": "string"
          },
          "nativeShortDisplayNamePlural": {
            "type": "string"
          },
          "urlSegment": {
            "type": "string"
          },
          "iconName": {
            "type": "string"
          },
          "useBasket": {
            "type": "boolean"
          },
          "description": {
            "type": "string"
          },
          "formats": {
            "description": "List of reporters",
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "isInReport",
                "displayName",
                "name",
                "scopes",
                "type"
              ],
              "additionalProperties": false,
              "properties": {
                "isInReport": {
                  "type": "boolean"
                },
                "displayName": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "scopes": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "record",
                      "results"
                    ]
                  }
                },
                "type": {
                  "type": "string"
                },
                "newBuild": {
                  "type": "string"
                },
                "reviseBuild": {
                  "type": "string"
                }
              }
            }
          },
          "properties": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "hasAllRecordsQuery": {
            "type": "boolean"
          },
          "primaryKeyColumnRefs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "recordIdAttributeName": {
            "type": "string"
          },
          "attributes": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name"
              ],
              "properties": {
                "align": {
                  "type": "string",
                  "enum": [
                    "center",
                    "left",
                    "right"
                  ]
                },
                "displayName": {
                  "type": "string"
                },
                "formats": {
                  "description": "List of reporters",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "isInReport",
                      "displayName",
                      "name",
                      "scopes",
                      "type"
                    ],
                    "additionalProperties": false,
                    "properties": {
                      "isInReport": {
                        "type": "boolean"
                      },
                      "displayName": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "scopes": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "record",
                            "results"
                          ]
                        }
                      },
                      "type": {
                        "type": "string"
                      },
                      "newBuild": {
                        "type": "string"
                      },
                      "reviseBuild": {
                        "type": "string"
                      }
                    }
                  }
                },
                "help": {
                  "type": "string"
                },
                "isDisplayable": {
                  "type": "boolean"
                },
                "isInReport": {
                  "type": "boolean"
                },
                "isRemovable": {
                  "type": "boolean"
                },
                "isSortable": {
                  "type": "boolean"
                },
                "name": {
                  "type": "string"
                },
                "properties": {
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "truncateTo": {
                  "type": "integer"
                },
                "type": {
                  "type": "string"
                }
              }
            }
          },
          "tables": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "attributes"
              ],
              "properties": {
                "displayName": {
                  "type": "string"
                },
                "help": {
                  "type": "string"
                },
                "isDisplayable": {
                  "type": "boolean"
                },
                "isInReport": {
                  "type": "boolean"
                },
                "name": {
                  "type": "string"
                },
                "attributes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "name"
                    ],
                    "properties": {
                      "align": {
                        "type": "string",
                        "enum": [
                          "center",
                          "left",
                          "right"
                        ]
                      },
                      "displayName": {
                        "type": "string"
                      },
                      "formats": {
                        "description": "List of reporters",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "isInReport",
                            "displayName",
                            "name",
                            "scopes",
                            "type"
                          ],
                          "additionalProperties": false,
                          "properties": {
                            "isInReport": {
                              "type": "boolean"
                            },
                            "displayName": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "scopes": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "enum": [
                                  "record",
                                  "results"
                                ]
                              }
                            },
                            "type": {
                              "type": "string"
                            },
                            "newBuild": {
                              "type": "string"
                            },
                            "reviseBuild": {
                              "type": "string"
                            }
                          }
                        }
                      },
                      "help": {
                        "type": "string"
                      },
                      "isDisplayable": {
                        "type": "boolean"
                      },
                      "isInReport": {
                        "type": "boolean"
                      },
                      "isRemovable": {
                        "type": "boolean"
                      },
                      "isSortable": {
                        "type": "boolean"
                      },
                      "name": {
                        "type": "string"
                      },
                      "properties": {
                        "additionalProperties": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "truncateTo": {
                        "type": "integer"
                      },
                      "type": {
                        "type": "string"
                      }
                    }
                  }
                },
                "properties": {
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "type": {
                  "type": "string"
                }
              }
            }
          },
          "searches": {
            "type": "array",
            "items": {
              "type": "object",
              "definitions": {
                "properties": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "filter-def-array": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "name",
                      "isViewOnly"
                    ],
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "displayName": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "isViewOnly": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              },
              "required": [
                "urlSegment",
                "fullName",
                "displayName",
                "shortDisplayName",
                "outputRecordClassName",
                "defaultAttributes",
                "defaultSorting",
                "dynamicAttributes",
                "defaultSummaryView",
                "noSummaryOnSingleRecord",
                "summaryViewPlugins",
                "filters",
                "isAnalyzable",
                "properties",
                "groups",
                "paramNames",
                "isCacheable"
              ],
              "additionalProperties": false,
              "properties": {
                "defaultAttributes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "defaultSummaryView": {
                  "type": "string"
                },
                "noSummaryOnSingleRecord": {
                  "type": "boolean"
                },
                "description": {
                  "type": "string"
                },
                "displayName": {
                  "type": "string"
                },
                "fullName": {
                  "type": "string"
                },
                "newBuild": {
                  "type": "string"
                },
                "filters": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "name",
                      "isViewOnly"
                    ],
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "displayName": {
                        "type": "string"
                      },
                      "description": {
                        "type": "string"
                      },
                      "isViewOnly": {
                        "type": "boolean"
                      }
                    }
                  }
                },
                "isAnalyzable": {
                  "type": "boolean"
                },
                "allowedPrimaryInputRecordClassNames": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "allowedSecondaryInputRecordClassNames": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "dynamicAttributes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "name"
                    ],
                    "properties": {
                      "align": {
                        "type": "string",
                        "enum": [
                          "center",
                          "left",
                          "right"
                        ]
                      },
                      "displayName": {
                        "type": "string"
                      },
                      "formats": {
                        "description": "List of reporters",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "isInReport",
                            "displayName",
                            "name",
                            "scopes",
                            "type"
                          ],
                          "additionalProperties": false,
                          "properties": {
                            "isInReport": {
                              "type": "boolean"
                            },
                            "displayName": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "scopes": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "enum": [
                                  "record",
                                  "results"
                                ]
                              }
                            },
                            "type": {
                              "type": "string"
                            },
                            "newBuild": {
                              "type": "string"
                            },
                            "reviseBuild": {
                              "type": "string"
                            }
                          }
                        }
                      },
                      "help": {
                        "type": "string"
                      },
                      "isDisplayable": {
                        "type": "boolean"
                      },
                      "isInReport": {
                        "type": "boolean"
                      },
                      "isRemovable": {
                        "type": "boolean"
                      },
                      "isSortable": {
                        "type": "boolean"
                      },
                      "name": {
                        "type": "string"
                      },
                      "properties": {
                        "additionalProperties": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "truncateTo": {
                        "type": "integer"
                      },
                      "type": {
                        "type": "string"
                      }
                    }
                  }
                },
                "groups": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "description",
                      "displayName",
                      "displayType",
                      "name",
                      "isVisible"
                    ],
                    "additionalProperties": false,
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "displayName": {
                        "type": "string"
                      },
                      "displayType": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "isVisible": {
                        "type": "boolean"
                      },
                      "parameters": {
                        "oneOf": [
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      }
                    }
                  }
                },
                "parameters": {
                  "type": "array",
                  "items": [
                    {
                      "type": "object",
                      "required": [
                        "countOnlyLeaves",
                        "dependentParams",
                        "displayName",
                        "filterDataTypeDisplayName",
                        "group",
                        "help",
                        "hideEmptyOntologyNodes",
                        "isReadOnly",
                        "length",
                        "minSelectedCount",
                        "name",
                        "ontology",
                        "type",
                        "values"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "dependentParams": {
                          "type": "array",
                          "description": "TODO: type of array elements"
                        },
                        "displayName": {
                          "type": "string"
                        },
                        "group": {
                          "type": "string"
                        },
                        "help": {
                          "type": "string"
                        },
                        "isReadOnly": {
                          "type": "boolean"
                        },
                        "isVisible": {
                          "type": "boolean"
                        },
                        "name": {
                          "type": "string"
                        },
                        "initialDisplayValue": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "filter"
                          ]
                        },
                        "countOnlyLeaves": {
                          "type": "boolean"
                        },
                        "filterDataTypeDisplayName": {
                          "type": "string"
                        },
                        "hideEmptyOntologyNodes": {
                          "type": "boolean"
                        },
                        "minSelectedCount": {
                          "type": "integer"
                        },
                        "ontology": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "term": {
                                "type": "string"
                              },
                              "parent": {
                                "type": "string"
                              },
                              "display": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "units": {
                                "type": "string"
                              },
                              "isRange": {
                                "type": "boolean"
                              },
                              "precision": {
                                "type": "integer"
                              },
                              "variableName": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "values": {
                          "type": "object",
                          "patternProperties": {
                            "^.+$": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "dependentParams",
                        "displayName",
                        "group",
                        "help",
                        "isReadOnly",
                        "length",
                        "name",
                        "type"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "dependentParams": {
                          "type": "array",
                          "description": "TODO: type of array elements"
                        },
                        "displayName": {
                          "type": "string"
                        },
                        "group": {
                          "type": "string"
                        },
                        "help": {
                          "type": "string"
                        },
                        "isReadOnly": {
                          "type": "boolean"
                        },
                        "isVisible": {
                          "type": "boolean"
                        },
                        "name": {
                          "type": "string"
                        },
                        "initialDisplayValue": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "input-step"
                          ]
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "countOnlyLeaves",
                        "dependentParams",
                        "depthExpanded",
                        "displayName",
                        "displayType",
                        "group",
                        "help",
                        "isReadOnly",
                        "length",
                        "maxSelectedCount",
                        "minSelectedCount",
                        "multiPick",
                        "name",
                        "type",
                        "vocabulary"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "dependentParams": {
                          "type": "array",
                          "description": "TODO: type of array elements"
                        },
                        "displayName": {
                          "type": "string"
                        },
                        "group": {
                          "type": "string"
                        },
                        "help": {
                          "type": "string"
                        },
                        "isReadOnly": {
                          "type": "boolean"
                        },
                        "isVisible": {
                          "type": "boolean"
                        },
                        "name": {
                          "type": "string"
                        },
                        "initialDisplayValue": {
                          "type": "string"
                        },
                        "countOnlyLeaves": {
                          "type": "boolean"
                        },
                        "depthExpanded": {
                          "type": "integer"
                        },
                        "displayType": {
                          "type": "string",
                          "enum": [
                            "select"
                          ]
                        },
                        "maxSelectedCount": {
                          "type": "integer"
                        },
                        "minSelectedCount": {
                          "type": "integer"
                        },
                        "multiPick": {
                          "type": "boolean"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "vocabulary"
                          ]
                        },
                        "vocabulary": {
                          "type": "array",
                          "items": {
                            "type": "array",
                            "maxItems": 3,
                            "minItems": 3,
                            "items": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "dependentParams",
                        "displayName",
                        "group",
                        "help",
                        "increment",
                        "isReadOnly",
                        "length",
                        "max",
                        "min",
                        "name",
                        "type"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "dependentParams": {
                          "type": "array",
                          "description": "TODO: type of array elements"
                        },
                        "displayName": {
                          "type": "string"
                        },
                        "group": {
                          "type": "string"
                        },
                        "help": {
                          "type": "string"
                        },
                        "isReadOnly": {
                          "type": "boolean"
                        },
                        "isVisible": {
                          "type": "boolean"
                        },
                        "name": {
                          "type": "string"
                        },
                        "initialDisplayValue": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "number"
                          ]
                        },
                        "min": {
                          "type": "number"
                        },
                        "max": {
                          "type": "number"
                        },
                        "increment": {
                          "type": "number"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "dependentParams",
                        "displayName",
                        "group",
                        "help",
                        "isReadOnly",
                        "length",
                        "maxDate",
                        "minDate",
                        "name",
                        "type"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "dependentParams": {
                          "type": "array",
                          "description": "TODO: type of array elements"
                        },
                        "displayName": {
                          "type": "string"
                        },
                        "group": {
                          "type": "string"
                        },
                        "help": {
                          "type": "string"
                        },
                        "isReadOnly": {
                          "type": "boolean"
                        },
                        "isVisible": {
                          "type": "boolean"
                        },
                        "name": {
                          "type": "string"
                        },
                        "initialDisplayValue": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "date"
                          ]
                        },
                        "minDate": {
                          "type": "string"
                        },
                        "maxDate": {
                          "type": "string"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "dependentParams",
                        "displayName",
                        "group",
                        "help",
                        "isReadOnly",
                        "length",
                        "name",
                        "parsers",
                        "type"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "dependentParams": {
                          "type": "array",
                          "description": "TODO: type of array elements"
                        },
                        "displayName": {
                          "type": "string"
                        },
                        "group": {
                          "type": "string"
                        },
                        "help": {
                          "type": "string"
                        },
                        "isReadOnly": {
                          "type": "boolean"
                        },
                        "isVisible": {
                          "type": "boolean"
                        },
                        "name": {
                          "type": "string"
                        },
                        "initialDisplayValue": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "input-dataset"
                          ]
                        },
                        "defaultIdList": {
                          "type": "string"
                        },
                        "parsers": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "displayName": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "dependentParams",
                        "displayName",
                        "group",
                        "help",
                        "isReadOnly",
                        "length",
                        "name",
                        "type"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "dependentParams": {
                          "type": "array",
                          "description": "TODO: type of array elements"
                        },
                        "displayName": {
                          "type": "string"
                        },
                        "group": {
                          "type": "string"
                        },
                        "help": {
                          "type": "string"
                        },
                        "isReadOnly": {
                          "type": "boolean"
                        },
                        "isVisible": {
                          "type": "boolean"
                        },
                        "name": {
                          "type": "string"
                        },
                        "initialDisplayValue": {
                          "type": "string"
                        },
                        "length": {
                          "type": "integer"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "string"
                          ]
                        }
                      }
                    },
                    {
                      "type": "object",
                      "required": [
                        "dependentParams",
                        "displayName",
                        "group",
                        "help",
                        "isReadOnly",
                        "length",
                        "name",
                        "type"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "dependentParams": {
                          "type": "array",
                          "description": "TODO: type of array elements"
                        },
                        "displayName": {
                          "type": "string"
                        },
                        "group": {
                          "type": "string"
                        },
                        "help": {
                          "type": "string"
                        },
                        "isReadOnly": {
                          "type": "boolean"
                        },
                        "isVisible": {
                          "type": "boolean"
                        },
                        "name": {
                          "type": "string"
                        },
                        "initialDisplayValue": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "enum": [
                            "timestamp"
                          ]
                        }
                      }
                    }
                  ]
                },
                "properties": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "outputRecordClassName": {
                  "type": "string"
                },
                "shortDisplayName": {
                  "type": "string"
                },
                "summary": {
                  "type": "string"
                },
                "summaryViewPlugins": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "displayName": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      }
                    }
                  }
                },
                "urlSegment": {
                  "type": "string"
                },
                "iconName": {
                  "type": "string"
                },
                "help": {
                  "type": "string"
                },
                "reviseBuild": {
                  "type": "string"
                },
                "defaultSorting": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "attributeName",
                      "direction"
                    ],
                    "additionalProperties": false,
                    "properties": {
                      "attributeName": {
                        "type": "string"
                      },
                      "direction": {
                        "type": "string",
                        "enum": [
                          "ASC",
                          "DESC"
                        ]
                      }
                    }
                  }
                },
                "paramNames": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "queryName": {
                  "type": "string"
                },
                "isCacheable": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    }
  ]
}

GET /record-types/{recordType}

Get a detailed description of the specified record type. This includes properties of the type, eg, whether it is displayable, and the attributes and tables that each record of this type will have, as well as the details of searches available for this record type.

GET /record-types/{recordType}
URI Parameters
  • recordType: required (string)

POST /record-types/{recordType}/records

(GET by POST) get the attributes and tables of a record instance

POST /record-types/{recordType}/records
URI Parameters
  • recordType: required (string)
Query Parameters
  • source_id: required (string)
  • project: required (string)
  • attributes: required (string)
  • tables: required (string)
  • categoriesFilter: required (string)
  • internalFilter: required (string)
  • inReportMakerFilter: required (string)
  • tableNamesFilter: required (string)
  • attributesNamesFilter: required (string)
Body

Media type: application/json

Type: any

Response 200

Success

Body

Media type: application/json

Type: any

Searches

GET /record-types/{record-type}/searches

Get a list of searches available for this record type. The information returned here is sufficient to form a menu of available searches for this record type. It does not include information about the parameters of each search. (The record-types endpoint returns similar information for a comprehensive list of searches for all record types, suitable to build a comprehensive menu of searches.)

GET /record-types/{record-type}/searches
URI Parameters
  • record-type: required (string)

GET /record-types/{record-type}/searches/{searchName}

Get detailed information about the specified search, including all parameters and the allowed values for them. Some types of parameters (vocabulary and filter) might depend on the value of other parameters to determine their allowed values. For example, the allowed values for a City parameter might depend on the previously set value for a State/Province parameter. This endpoint uses default parameter values to resolve those dependencies. The response has detailed parameter information, including vocabularies and metadata as appropriate. This endpoint is typically used to render a "new" search page (i.e. filled with default parameter values).

GET /record-types/{record-type}/searches/{searchName}
URI Parameters
  • record-type: required (string)
  • searchName: required (string)

Response 200

Body

Media type: application/json

Type: any

POST /record-types/{record-type}/searches/{searchName}

Similar to the GET endpoint but uses supplied parameter values, rather than default parameter values. Missing or invalid parameter values are replaced with valid default values. Response is the same as the GET, but includes error messages for any invalid or missing parameter values. This endpoint is typically used to render a page to revise a search.

POST /record-types/{record-type}/searches/{searchName}
URI Parameters
  • record-type: required (string)
  • searchName: required (string)

POST /record-types/{record-type}/searches/{searchName}/refreshed-dependent-params

POST /record-types/{record-type}/searches/{searchName}/refreshed-dependent-params
URI Parameters
  • record-type: required (string)
  • searchName: required (string)

GET /record-types/{record-type}/searches/{searchName}/{paramName}

Get a get parameter's details, including vocab if appropriate. For dependent params, if stepId provided, this is a step revise; use the step to get depended param values. Otherwise, use defaults. Client will need to call this to get filter params and enum params with displayType="typeAhead".

GET /record-types/{record-type}/searches/{searchName}/{paramName}
URI Parameters
  • record-type: required (string)
  • searchName: required (string)
  • paramName: required (string)
Query Parameters
  • stepId: required (string)
  • displayType: required (string)

POST /record-types/{record-type}/searches/{searchName}/{paramName}

GET by POST. Get a dependent parameter's details, including vocab.. The body must contain a JSON map of depended param values. (These will be validated). Because of complexity of dependent parameters' relationship, the client must guarantee these calls are ordered correctly.

POST /record-types/{record-type}/searches/{searchName}/{paramName}
URI Parameters
  • record-type: required (string)
  • searchName: required (string)
  • paramName: required (string)

POST /record-types/{record-type}/searches/{searchName}/{paramName}/ontology-term-summary

POST /record-types/{record-type}/searches/{searchName}/{paramName}/ontology-term-summary
URI Parameters
  • record-type: required (string)
  • searchName: required (string)
  • paramName: required (string)

POST /record-types/{record-type}/searches/{searchName}/{paramName}/summary-counts

POST /record-types/{record-type}/searches/{searchName}/{paramName}/summary-counts
URI Parameters
  • record-type: required (string)
  • searchName: required (string)
  • paramName: required (string)

Reports

GET /record-types/{record-type}/searches/{search-name}/reports

GET /record-types/{record-type}/searches/{search-name}/reports
URI Parameters
  • record-type: required (string)
  • search-name: required (string)

POST /record-types/{record-type}/searches/{search-name}/reports/standard

POST /record-types/{record-type}/searches/{search-name}/reports/standard
URI Parameters
  • record-type: required (string)
  • search-name: required (string)

POST /record-types/{record-type}/searches/{search-name}/reports/{reportName}

POST /record-types/{record-type}/searches/{search-name}/reports/{reportName}
URI Parameters
  • record-type: required (string)
  • search-name: required (string)
  • reportName: required (string)

POST /record-types/{record-type}/searches/{search-name}/reports/filter-summary/{filterName}

POST /record-types/{record-type}/searches/{search-name}/reports/filter-summary/{filterName}
URI Parameters
  • record-type: required (string)
  • search-name: required (string)
  • filterName: required (string)
Body

Media type: application/json

Type: any

Response 200

Success

Body

Media type: application/json

Type: any

/strategy

Strategy List

GET /strategy-list

Get a list of summary info about a set of strategies

GET /strategy-list
Query Parameters
  • ids: required (string)

    idList

  • action: required (string)

    open, close, delete

GET /strategy-list/public

a multi-column list of public strategies

GET /strategy-list/public

System

GET /system/appdb/connections

Administrative access required for this function. Unclosed connection info for the app database.

GET /system/appdb/connections

Response 403

Unauthorized

Body

Media type: text/plain

Type: string

GET /system/caches

Administrative access required for this function. Usage stats for various in memory data stores.

GET /system/caches

Response 200

Success

Body

Media type: application/json

Type: any

Temporary Results

POST /temporary-results

This service provides the ability to store a combination of the specification for a search + a specification for a report (i.e. everything WDK needs to produce a reporter output data stream), to be accessed later via a produced ID.

The POST creates and validates a temporary result specification and stores it in the answer request cache. The submitted JSON must contain either a step ID or a search name+config, i.e.

{ stepId: integer, // valid step ID for this user reportName: string, // name of report reportConfig: object // configuration of this report }

OR

{ searchName: string, // question name = url segment searchConfig: object, // standard answer spec object reportName: string, // name of report reportConfig: object // configuration of this report }

POST /temporary-results
Body

Media type: application/json

Type: any

Response 200

Success

Body

Media type: application/json

Type: any

GET /temporary-results/{id}

Looks up the spec, executes the search, creates the specified report, and streams the result

GET /temporary-results/{id}
URI Parameters
  • id: required (string)

    ID returned by a temporary results POST request

Response 200

Success

/upload

User ID Query

POST /user-id-query

Accepts an array of email addresses and attempts to locate the user ids (if any) associated with them. Returns an array of objects containing a single email as a key mapped to the matching user id.

If an email address is not in the system, it will be excluded from the output list.

POST /user-id-query
Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "properties": {
    "emails": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "email"
      }
    }
  },
  "required": [
    "emails"
  ]
}

Response 200

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "^.+$": {
            "description": "Key/value object where the key is an email address and the value is the id for the user matching that email",
            "type": "integer"
          }
        }
      }
    }
  },
  "required": [
    "results"
  ]
}

User Password Reset

POST /user-password-reset

Reset a user's password.

POST /user-password-reset
Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email"
    }
  },
  "required": [
    "email"
  ]
}

Response 204

User Dataset Config

GET /user-datasets/config

GET /user-datasets/config

Response 200

Success

Body

Media type: application/json

Type: any

User API

POST /users

Register a new, unverified user, and return the user's new ID.

POST /users
Body

Media type: application/json

Type: any

Media type: responses

Type: any

GET /users/{user-id}

Get the details of the current user or a user by ID.

GET /users/{user-id}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Response 200

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-04/schema",
  "definitions": {
    "userProperties": {
      "type": "object",
      "required": [
        "firstName",
        "lastName",
        "organization",
        "middleName"
      ],
      "additionalProperties": false,
      "properties": {
        "firstName": {
          "type": "string"
        },
        "lastName": {
          "type": "string"
        },
        "organization": {
          "type": "string"
        },
        "middleName": {
          "type": "string"
        }
      }
    },
    "userPreferences": {
      "type": "object",
      "required": [
        "global",
        "project"
      ],
      "additionalProperties": false,
      "properties": {
        "global": {
          "title": "Map <String, String>",
          "description": "An object which can only contain string values.",
          "type": "object",
          "additionalProperties": false,
          "patternProperties": {
            "^.+$": {
              "type": "string"
            }
          }
        },
        "project": {
          "title": "Map <String, String>",
          "description": "An object which can only contain string values.",
          "type": "object",
          "additionalProperties": false,
          "patternProperties": {
            "^.+$": {
              "type": "string"
            }
          }
        }
      }
    }
  },
  "type": "object",
  "properties": {
    "email": {
      "type": "string"
    },
    "id": {
      "type": "integer"
    },
    "isGuest": {
      "type": "boolean"
    },
    "preferences": {
      "type": "object",
      "required": [
        "global",
        "project"
      ],
      "additionalProperties": false,
      "properties": {
        "global": {
          "title": "Map <String, String>",
          "description": "An object which can only contain string values.",
          "type": "object",
          "additionalProperties": false,
          "patternProperties": {
            "^.+$": {
              "type": "string"
            }
          }
        },
        "project": {
          "title": "Map <String, String>",
          "description": "An object which can only contain string values.",
          "type": "object",
          "additionalProperties": false,
          "patternProperties": {
            "^.+$": {
              "type": "string"
            }
          }
        }
      }
    },
    "properties": {
      "type": "object",
      "required": [
        "firstName",
        "lastName",
        "organization",
        "middleName"
      ],
      "additionalProperties": false,
      "properties": {
        "firstName": {
          "type": "string"
        },
        "lastName": {
          "type": "string"
        },
        "organization": {
          "type": "string"
        },
        "middleName": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "email",
    "id",
    "isGuest",
    "properties"
  ],
  "additionalProperties": false
}

PATCH /users/{user-id}

Update one or more details about a user. Only supplied fields are updated.

PATCH /users/{user-id}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Body

Media type: application/json

Type: any

Response 200

Body

Media type: application/json

Type: any

PUT /users/{user-id}

Replace all user details with those provided.

PUT /users/{user-id}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Body

Media type: application/json

Type: any

DELETE /users/{user-id}

Delete this user.

DELETE /users/{user-id}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

GET /users/{user-id}/baskets

Get a list of the user's baskets. Returns a JSON object mapping basket name to the number of records in that basket. For now only one basket is supported per record-type, for those record-types that allow baskets. All allowed baskets, including empty ones, are returned in this listing.

GET /users/{user-id}/baskets
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Response 200

Success

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "patternProperties": {
    "^.+$": {
      "type": "integer"
    }
  }
}

GET /users/{user-id}/baskets/{basketName}

Returns detailed information for the basket of the specified name.

GET /users/{user-id}/baskets/{basketName}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • basketName: required (string)

PATCH /users/{user-id}/baskets/{basketName}

Add and/or remove records to/from this basket.

PATCH /users/{user-id}/baskets/{basketName}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • basketName: required (string)

Response 204

DELETE /users/{user-id}/baskets/{basketName}

DELETE /users/{user-id}/baskets/{basketName}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • basketName: required (string)

GET /users/{user-id}/datasets

Get a list of the user's baskets. Returns a JSON object mapping basket name to the number of records in that basket. For now only one basket is supported per record-type, for those record-types that allow baskets. All allowed baskets, including empty ones, are returned in this listing.

GET /users/{user-id}/datasets
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Response 200

Success

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "patternProperties": {
    "^.+$": {
      "type": "integer"
    }
  }
}

GET /users/{user-id}/datasets/{basketName}

Returns detailed information for the basket of the specified name.

GET /users/{user-id}/datasets/{basketName}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • basketName: required (string)

PATCH /users/{user-id}/datasets/{basketName}

Add and/or remove records to/from this basket.

PATCH /users/{user-id}/datasets/{basketName}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • basketName: required (string)

Response 204

DELETE /users/{user-id}/datasets/{basketName}

DELETE /users/{user-id}/datasets/{basketName}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • basketName: required (string)

GET /users/{user-id}/favorites

Returns array of user's favorites (takes rc param to filter)

GET /users/{user-id}/favorites
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Response 200

Success

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "id",
      "primaryKey",
      "recordClassName",
      "displayName",
      "description",
      "group"
    ],
    "properties": {
      "id": {
        "type": "integer"
      },
      "primaryKey": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "name",
            "value"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          }
        }
      },
      "recordClassName": {
        "type": "string"
      },
      "displayName": {
        "type": "string"
      },
      "description": {
        "type": "string",
        "maxLength": 200
      },
      "group": {
        "type": "string",
        "maxLength": 50
      }
    }
  }
}

PATCH /users/{user-id}/favorites

Accepts instructions for editing/deleting multiple favorites

PATCH /users/{user-id}/favorites
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "anyOf": [
    {
      "required": [
        "delete"
      ]
    },
    {
      "required": [
        "undelete"
      ]
    }
  ],
  "properties": {
    "delete": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    },
    "undelete": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    }
  }
}

Response 200

Success

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "required": [
    "delete",
    "undelete"
  ],
  "properties": {
    "delete": {
      "type": "integer"
    },
    "undelete": {
      "type": "integer"
    }
  }
}

POST /users/{user-id}/favorites

Adds the passed favorite (object) or favorites (array) to user's favorites and returns with IDs

POST /users/{user-id}/favorites
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

GET /users/{user-id}/favorites/{favoriteId}

Returns the specified favorite

GET /users/{user-id}/favorites/{favoriteId}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • favoriteId: required (integer)

    user favorite id

Response 200

Success

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "id",
      "primaryKey",
      "recordClassName",
      "displayName",
      "description",
      "group"
    ],
    "properties": {
      "id": {
        "type": "integer"
      },
      "primaryKey": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "name",
            "value"
          ],
          "properties": {
            "name": {
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          }
        }
      },
      "recordClassName": {
        "type": "string"
      },
      "displayName": {
        "type": "string"
      },
      "description": {
        "type": "string",
        "maxLength": 200
      },
      "group": {
        "type": "string",
        "maxLength": 50
      }
    }
  }
}

PATCH /users/{user-id}/favorites/{favoriteId}

Replaces the specified favorite with the passed one

PATCH /users/{user-id}/favorites/{favoriteId}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • favoriteId: required (integer)

    user favorite id

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "properties": {
    "description": {
      "type": "string",
      "maxLength": 200
    },
    "group": {
      "type": "string",
      "maxLength": 50
    }
  },
  "required": [
    "description",
    "group"
  ]
}

Response 204

No content

DELETE /users/{user-id}/favorites/{favoriteId}

Deletes the specified favorite

DELETE /users/{user-id}/favorites/{favoriteId}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • favoriteId: required (integer)

    user favorite id

Response 204

No content

POST /users/{user-id}/favorites/query

Takes array of {record-type + primary keys} objects as JSON and returns object containing the subset of those that are favorites.

POST /users/{user-id}/favorites/query
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

GET /users/{user-id}/preference

Get a listing of this user's preferences. (For preferences associated with a specific search strategy step, see the /step endpoints). Returns a JSON map of user preference name to user preference value.

GET /users/{user-id}/preference
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Response 200

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "properties": {
    "project": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "global": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    }
  }
}

PATCH /users/{user-id}/preference

Update preferences passed (missing prefs are unaffected)

PATCH /users/{user-id}/preference
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

PUT /users/{user-id}/preference

Replace all user preferences with those passed in (delete missing prefs)

PUT /users/{user-id}/preference
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

POST /users/{user-id}/steps

  • Creates a new search strategy step. A Step is always created unattached to a strategy. (Use the strategy/ endpoint to add the step to a strategy. At that point, the step will be assigned its strategy ID.)
  • If the associated search does not have step parameters all parameters are validated.
  • If the associated search does have step parameters:
    • In the request body, step parameter values must be set to an empty string, else validation will fail. (Step parameters are exclusively handled by /strategy)
    • The other parameters will be validated as usual.
  • If validation of any param fails, no step is created and a 400/500 HTTP response will be returned
POST /users/{user-id}/steps
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-04/schema",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "customName": {
      "type": "string"
    },
    "expanded": {
      "type": "boolean"
    },
    "expandedName": {
      "type": "string"
    },
    "searchName": {
      "type": "string"
    },
    "searchConfig": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "parameters": {
          "title": "Map <String, String>",
          "description": "An object which can only contain string values.",
          "type": "object",
          "additionalProperties": false,
          "patternProperties": {
            "^.+$": {
              "type": "string"
            }
          }
        },
        "legacyFilterName": {
          "type": "string"
        },
        "wdkWeight": {
          "type": "integer"
        },
        "filters": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "name",
              "value"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string"
              },
              "value": {},
              "disabled": {
                "type": "boolean"
              }
            }
          }
        },
        "columnFilters": {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "additionalProperties": {
              "type": "object"
            }
          }
        }
      }
    },
    "viewFilters": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "value"
        ],
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "object"
          }
        }
      }
    },
    "displayPreferences": {
      "type": "object",
      "properties": {
        "columnSelection": {
          "description": "Names of user selected display columns for a step",
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string"
          }
        },
        "sortColumns": {
          "description": "Ordered list of column names to sort direction",
          "type": "array",
          "items": {
            "type": "object",
            "minProperties": 1,
            "maxProperties": 3,
            "properties": {
              "name": {
                "description": "The name of a column",
                "type": "string"
              },
              "direction": {
                "description": "The direction to sort the column",
                "type": "string",
                "enum": [
                  "ASC",
                  "DESC"
                ]
              }
            }
          }
        }
      }
    }
  },
  "required": [
    "searchConfig",
    "searchName"
  ]
}

Response 200

Success

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-04/schema",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "type": "number"
    }
  }
}

GET /users/{user-id}/steps/{step-id}

  • Returns full JSON of the step, including all parameter values.
    • This is to support the revise-a-search form (to fill in initial values) and any display of the step's search configuration.
GET /users/{user-id}/steps/{step-id}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • step-id: required (integer)

GET /users/{user-id}/steps/{stepId}/analyses

Retrieve a list of analyses that have been run on this step.

GET /users/{user-id}/steps/{stepId}/analyses
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • stepId: required (string)

Response 200

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "analysisId",
      "displayName"
    ],
    "properties": {
      "analysisId": {
        "type": "integer",
        "examples": [
          100108390
        ]
      },
      "displayName": {
        "type": "string",
        "examples": [
          "Gene Ontology Enrichment"
        ]
      }
    }
  }
}

Example:

[
  {
      "analysisId": 100108390,
      "displayName": "Gene Ontology Enrichment"
  }
]

POST /users/{user-id}/steps/{stepId}/analyses

Creates a new analysis (i.e. tab)

POST /users/{user-id}/steps/{stepId}/analyses
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • stepId: required (string)
Body

Media type: application/json

Type: any

Example:

{
  "analysisType": "string",
  "parameters": {},
  "customName": "string" // optional, generated if absent
}

Response 200

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "properties": {
    "analysisName": {
      "type": "string"
    },
    "answerValueHash": {
      "type": "string"
    },
    "formParams": {
      "type": "object",
      "patternProperties": {
        "^.+$": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "analysisId": {
      "type": "integer"
    },
    "stepId": {
      "type": "integer"
    },
    "displayName": {
      "type": "string"
    },
    "shortDescription": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "hasParams": {
      "type": "boolean"
    },
    "status": {
      "type": "string"
    },
    "invalidStepReason": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "analysisName",
    "answerValueHash",
    "formParams",
    "analysisId",
    "stepId",
    "displayName",
    "shortDescription",
    "description",
    "hasParams",
    "status",
    "invalidStepReason"
  ]
}

Example:

{
  "analysisName": "some analysis name",
  "analysisId": 1234,
  "stepId": 1234,
  "answerValueHash": "MD5 hash",
  "displayName": "some customizable name",
  "shortDescription": "a short description",
  "description": "a longer description",
  "hasParams": true,
  "status": "a status?",
  "formParams": {
    "param name": [
      "some",
      "param",
      "values"
    ]
  },
  "invalidStepReason": null
}

DELETE /users/{user-id}/steps/{stepId}/analyses/{analysis-id}

Deletes this analysis and associated run if present

DELETE /users/{user-id}/steps/{stepId}/analyses/{analysis-id}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • stepId: required (string)
  • analysis-id: required (integer)

    Analysis instance id.

GET /users/{user-id}/steps/{stepId}/analyses/{analysis-id}

Returns the resource above for form population

GET /users/{user-id}/steps/{stepId}/analyses/{analysis-id}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • stepId: required (string)
  • analysis-id: required (integer)

    Analysis instance id.

PATCH /users/{user-id}/steps/{stepId}/analyses/{analysis-id}

analysisType is not supported; if parameters is modified, then results are cleared

PATCH /users/{user-id}/steps/{stepId}/analyses/{analysis-id}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • stepId: required (string)
  • analysis-id: required (integer)

    Analysis instance id.

Body

Media type: application/json

Type: any

Example:

{
  "parameters": {},      // (optional)
  "customName": "string" // (optional)
}

Response 204

No Content

Response 422

Unprocessable entry

Body

Media type: application/json

Type: Can not resolve ../../../../schema/includes/string-array.json

GET /users/{user-id}/steps/{stepId}/analyses/{analysis-id}/result

COMPLETE: return 200 + plugin-specific JSON object result, else 204: No Content or some other code meaning use view for the current status code rather than the custom component to display the result

GET /users/{user-id}/steps/{stepId}/analyses/{analysis-id}/result
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • stepId: required (string)
  • analysis-id: required (integer)

    Analysis instance id.

Response 200

Response 204

POST /users/{user-id}/steps/{stepId}/analyses/{analysis-id}/result

Kicks off a run

HTTP codes based on status:

- RUNNING: return 202: Accepted
- INVALID: 400 or 406
- Any of the other statuses (below), run it, return 202: Accepted
  COMPLETE
  NOT_YET_RUN
  STEP_REVISED // new analysis, created as copy during step revise
  INTERRUPTED // server shutdown or other interruption
  ERROR // no longer running due to runtime error
  EXPIRED // plugin ran too long and was shut down
  OUT_OF_DATE // has been run but results cache purged
POST /users/{user-id}/steps/{stepId}/analyses/{analysis-id}/result
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • stepId: required (string)
  • analysis-id: required (integer)

    Analysis instance id.

Response 202

status RUNNING, COMPLETE, NOT_YET_RUN, STEP_REVISED, INTERRUPTED, ERROR, EXPIRED, OUT_OF_DATE

Response 400

status INVALID

Response 406

status INVALID

GET /users/{user-id}/steps/{stepId}/analyses/{analysis-id}/result/status

GET /users/{user-id}/steps/{stepId}/analyses/{analysis-id}/result/status
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • stepId: required (string)
  • analysis-id: required (integer)

    Analysis instance id.

Response 200

status: enum
NOT_YET_RUN  = user never submitted form and not auto-run
STEP_REVISED = new analysis, created as copy during step revise
INVALID      = made for a step it does not support; should never be run
RUNNING      = currently running (or interrupted but not yet 'fixed')
COMPLETE     = completed successfully
INTERRUPTED  = server shutdown or other interruption
ERROR        = no longer running due to runtime error
EXPIRED      = plugin ran too long and was shut down
OUT_OF_DATE  = has been run but results cache purged
Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "NOT_YET_RUN",
        "STEP_REVISED",
        "INVALID",
        "RUNNING",
        "COMPLETE",
        "INTERRUPTED",
        "ERROR",
        "EXPIRED",
        "OUT_OF_DATE"
      ]
    }
  },
  "additionalProperties": false,
  "required": [
    "status"
  ]
}

GET /users/{user-id}/steps/{stepId}/analysis-types

Get names, display names, and icons of available tools.

GET /users/{user-id}/steps/{stepId}/analysis-types
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • stepId: required (string)

Response 200

Body

Media type: application/json

Type:

{
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "hasParameters": {
        "type": "boolean"
      },
      "displayName": {
        "type": "string",
        "examples": [
          "Gene Ontology Enrichment"
        ]
      },
      "releaseVersion": {
        "type": "string",
        "examples": [
          "22"
        ]
      },
      "name": {
        "type": "string",
        "examples": [
          "go-enrichment"
        ]
      },
      "description": {
        "type": "string",
        "examples": [
          "<p>Some HTML String</p>"
        ]
      },
      "customThumbnail": {
        "type": "string",
        "examples": [
          "wdkCustomization/images/go-analysis-logo.png"
        ]
      },
      "shortDescription": {
        "type": "string",
        "examples": [
          "Find Gene Ontology terms that are enriched in your gene result."
        ]
      }
    }
  }
}

GET /users/{user-id}/steps/{stepId}/analysis-types/{analysis-type-name}

Get (possibly dynamic) form creation information + default values.

GET /users/{user-id}/steps/{stepId}/analysis-types/{analysis-type-name}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • stepId: required (string)
  • analysis-type-name: required (string)

Response 200

Body

Media type: application/json

Type: any

GET /users/{user-id}/strategy

Returns an array of strategies, ordered by strategy ID. Does not run steps or update their estimated size. This endpoint is fast, to support a strategies listing display. estimatedSize is absent if not known.

GET /users/{user-id}/strategy
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Response 200

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-04/schema",
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "rootStepId",
      "isDeleted",
      "isSaved",
      "isValid",
      "isPublic",
      "isExample"
    ],
    "additionalProperties": false,
    "properties": {
      "strategyId": {
        "type": "integer"
      },
      "description": {
        "type": "string"
      },
      "name": {
        "type": "string"
      },
      "author": {
        "type": "string"
      },
      "rootStepId": {
        "type": "integer"
      },
      "recordClassName": {
        "type": [
          "string",
          "null"
        ]
      },
      "signature": {
        "type": "string"
      },
      "createdTime": {
        "type": "string",
        "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?$"
      },
      "lastViewed": {
        "type": "string",
        "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?$"
      },
      "lastModified": {
        "type": "string",
        "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?$"
      },
      "releaseVersion": {
        "type": "string"
      },
      "isPublic": {
        "type": "boolean"
      },
      "isSaved": {
        "type": "boolean"
      },
      "isValid": {
        "type": "boolean"
      },
      "isDeleted": {
        "type": "boolean"
      },
      "isExample": {
        "type": "boolean"
      },
      "organization": {
        "type": "string"
      },
      "estimatedSize": {
        "type": "integer"
      },
      "leafAndTransformStepCount": {
        "type": "integer"
      },
      "nameOfFirstStep": {
        "type": "string"
      }
    }
  }
}

POST /users/{user-id}/strategy

Create a new strategy either from a provided tree of steps, or by duplicating an existing strategy. In the former case, provide the tree of steps in the 'stepsTree' property, and do not provide the 'sourceStrategy' property. In the latter case, do the opposite.

Using the stepsTree property

  • Create a strategy from one or more steps. The stepTree structure may have a single step, or a tree of steps. (Use the steps endpoint to first create the steps that will be in the strategy. Use the PUT strategies/{id} endpoint to revise the tree after you create the strategy using this endpoint.)
  • Submitted steps must:
  • have the same owner and project as this strategy
  • not already belong to a strategy (ie, must not have an assigned strategy ID).
  • have only null as values for all step parameters
  • To add an existing strategy as a subtree in this step tree, use the strategies/{other-id}/duplicated-step-tree endpoint to get a valid step tree for use in the stepTree property.

With Source Strategy

  • This is to support importing another user's strategy as a new strategy for this user.
  • Input JSON is only the sourceStrategySignature property
  • Makes a copy of the strategy with the specified signature. It will contain exact copies of each step (but with new step IDs) and a new strategy ID.
  • estimatedSize of each new step will be set as found in the orignal step
POST /users/{user-id}/strategy
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-04/schema",
  "definitions": {
    "step": {
      "type": "object",
      "required": [
        "stepId"
      ],
      "additionalProperties": false,
      "properties": {
        "stepId": {
          "type": "integer"
        },
        "primaryInput": {
          "$ref": "#/definitions/step"
        },
        "secondaryInput": {
          "$ref": "#/definitions/step"
        }
      }
    }
  },
  "oneOf": [
    {
      "type": "object",
      "description": "Strategy copy request",
      "properties": {
        "sourceStrategySignature": {
          "description": "signature of the source strategy to copy",
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "sourceStrategySignature"
      ]
    },
    {
      "type": "object",
      "description": "New strategy request",
      "properties": {
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "savedName": {
          "type": "string"
        },
        "isSaved": {
          "type": "boolean"
        },
        "isPublic": {
          "type": "boolean"
        },
        "stepTree": {
          "$ref": "#/definitions/step"
        }
      },
      "additionalProperties": false,
      "required": [
        "name",
        "isSaved",
        "isPublic",
        "stepTree"
      ]
    }
  ]
}

Response 200

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-04/schema",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "type": "number"
    }
  }
}

PATCH /users/{user-id}/strategy

Update the isDeleted status of one or more strategies. Setting the flag to true deletes the strategy; setting it to false restores it. See DELETE strategies/{id} for a description of the semantics of delete.

PATCH /users/{user-id}/strategy
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Body

Media type: application/json

Type:

{
  "$schema": "http://json-schema.org/draft-04/schema",
  "type": "array",
  "description": "Collection of strategies to delete/restore",
  "items": {
    "type": "object",
    "required": [
      "isDeleted",
      "strategyId"
    ],
    "additionalProperties": false,
    "properties": {
      "strategyId": {
        "description": "Strategy ID",
        "type": "integer"
      },
      "isDeleted": {
        "description": "Whether or not the given strategy ID should be marked as deleted.",
        "type": "boolean"
      }
    }
  }
}

Response 204

No Content

GET /users/{user-id}/strategy/{strategy-id}

  • Returns the full JSON for a strategy, including step JSON for every step in the strategy
  • Any steps that have null estimatedSize will be run and updated
GET /users/{user-id}/strategy/{strategy-id}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • strategy-id: required (string)

Response 200

Body

Media type: application/json

Type: any

GET /users/{user-id}/user-datasets

GET /users/{user-id}/user-datasets
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Query Parameters
  • expandDetails: required (boolean)

Response 200

Body

Media type: application/json

Type: any

DELETE /users/{user-id}/user-datasets/{datasetId}

DELETE /users/{user-id}/user-datasets/{datasetId}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • datasetId: required (integer)

Response 204

GET /users/{user-id}/user-datasets/{datasetId}

GET /users/{user-id}/user-datasets/{datasetId}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • datasetId: required (integer)

Response 200

Body

Media type: application/json

Type: any

PUT /users/{user-id}/user-datasets/{datasetId}/meta

PUT /users/{user-id}/user-datasets/{datasetId}/meta
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • datasetId: required (integer)
Body

Media type: application/json

Type: any

Response 204

GET /users/{user-id}/user-datasets/{datasetId}/user-datafiles/{datafileName}

GET /users/{user-id}/user-datasets/{datasetId}/user-datafiles/{datafileName}
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

  • datasetId: required (integer)
  • datafileName: required (string)

Response 200

Body

Media type: application/octet-stream

Type: any

PATCH /users/{user-id}/user-datasets/sharing

PATCH /users/{user-id}/user-datasets/sharing
URI Parameters
  • user-id: required (string - pattern: ^[0-9]+|current$)

    Either the ID of a user or the string "current" for the current user.

Body

Media type: application/json

Type: any

Response 200

Body

Media type: application/json

Type: any