openapi: 3.0.0 info: description: Yoda core ruleset containing iRODS and Python rules and policies useful for all Yoda environments. contact: email: l.r.westerhof@uu.nl version: 2.1.0 title: Yoda datarequest API servers: - url: https://portal.yoda.test/api description: Local Yoda development server security: - cookieAuth: [] - basicAuth: [] components: schemas: result_error: type: object properties: status: type: string description: Holds an error ID status_info: type: string description: Holds a human-readable error description data: description: empty nullable: true type: object securitySchemes: cookieAuth: in: cookie type: apiKey name: yoda_session basicAuth: type: http scheme: basic responses: status_400: description: Bad request content: application/json: schema: $ref: '#/components/schemas/result_error' status_500: description: Internal error content: application/json: schema: $ref: '#/components/schemas/result_error' paths: /datarequest_action_permitted: post: tags: - datarequest summary: 'Wrapper around datarequest_action_permitted. ' requestBody: required: true content: application/json: schema: type: object required: - request_id - roles - statuses properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false roles: type: array description: 'List of permitted roles (possible values: PM, ED, DM, DAC, OWN, REV)' default: null nullable: false items: {} statuses: type: array description: List of permitted current data request statuses or None (check skipped) default: null nullable: false items: {} responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_roles_get: post: tags: - datarequest summary: "Get roles of invoking user.\n if this parameter is missing)\n" requestBody: required: true content: application/json: schema: type: object properties: request_id: type: string description: Unique identifier of the data request (OWN and REV roles will not be checked default: None nullable: true responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_schema_get: post: tags: - datarequest summary: '' requestBody: required: true content: application/json: schema: type: object required: - schema_name properties: schema_name: type: string description: (undocumented) default: null nullable: false version: type: string description: (undocumented) default: SCHEMA_VERSION nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_resubmission_id_get: post: tags: - datarequest summary: 'Given a request ID, get the request ID of the associated resubmitted data request. ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_browse: post: tags: - datarequest summary: "Get paginated datarequests, including size/modify date information.\n \ \ show non-archived data requests\n be reviewed\n" requestBody: required: true content: application/json: schema: type: object properties: sort_on: type: string description: Column to sort on ('name', 'modified') default: '''name''' nullable: false sort_order: type: string description: Column sort order ('asc' or 'desc') default: '''asc''' nullable: false offset: type: integer description: Offset to start browsing from default: '0' nullable: false limit: type: integer description: Limit number of results default: '10' nullable: false archived: type: boolean description: If true, show archived (i.e. rejected) data requests only. If false, only default: 'False' nullable: false dacrequests: type: boolean description: If true, show a DAC member's own data requests (instead of data requests to default: 'True' nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_submit: post: tags: - datarequest summary: 'Persist a data request to disk. ' requestBody: required: true content: application/json: schema: type: object required: - data - draft properties: data: type: object description: Contents of the data request default: null nullable: false draft: type: boolean description: Boolean specifying whether the data request should be saved as draft default: null nullable: false draft_request_id: type: string description: Unique identifier of the draft data request default: None nullable: true responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_get: post: tags: - datarequest summary: 'Retrieve a data request. ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: integer description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_attachment_upload_permission: post: tags: - datarequest summary: ' revoked ("grantread" or "revoke") ' requestBody: required: true content: application/json: schema: type: object required: - request_id - action properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false action: type: string description: String specifying whether write permission must be granted ("grant") or default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_attachment_post_upload_actions: post: tags: - datarequest summary: 'Grant read permissions on the attachment to the owner of the associated data request. :param filename: Filename of attachment' requestBody: required: true content: application/json: schema: type: object required: - request_id - filename properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false filename: type: string description: Filename of attachment default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_attachments_get: post: tags: - datarequest summary: 'Get all attachments of a given data request. ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_attachments_submit: post: tags: - datarequest summary: 'Finalize the submission of uploaded attachments :param request_id: Unique identifier of the data request' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_preliminary_review_submit: post: tags: - datarequest summary: 'Persist a preliminary review to disk. ' requestBody: required: true content: application/json: schema: type: object required: - data - request_id properties: data: type: object description: Contents of the preliminary review default: null nullable: false request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_preliminary_review_get: post: tags: - datarequest summary: 'Retrieve a preliminary review. ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_datamanager_review_submit: post: tags: - datarequest summary: 'Persist a datamanager review to disk. ' requestBody: required: true content: application/json: schema: type: object required: - data - request_id properties: data: type: object description: Contents of the datamanager review default: null nullable: false request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_datamanager_review_get: post: tags: - datarequest summary: 'Retrieve a data manager review. ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_dac_members_get: post: tags: - datarequest summary: '' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: (undocumented) default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_assignment_submit: post: tags: - datarequest summary: 'Persist an assignment to disk. ' requestBody: required: true content: application/json: schema: type: object required: - data - request_id properties: data: type: object description: Contents of the assignment default: null nullable: false request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_assignment_get: post: tags: - datarequest summary: 'Retrieve assignment. ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_review_submit: post: tags: - datarequest summary: 'Persist a data request review to disk. ' requestBody: required: true content: application/json: schema: type: object required: - data - request_id properties: data: type: object description: Contents of the review default: null nullable: false request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_reviews_get: post: tags: - datarequest summary: 'Retrieve a data request review. ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_evaluation_submit: post: tags: - datarequest summary: 'Persist an evaluation to disk. ' requestBody: required: true content: application/json: schema: type: object required: - data - request_id properties: data: type: object description: Contents of the evaluation default: null nullable: false request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_approval_conditions_get: post: tags: - datarequest summary: 'Retrieve approval conditions ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_evaluation_get: post: tags: - datarequest summary: 'Retrieve an evaluation. ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_feedback_get: post: tags: - datarequest summary: 'Get feedback for researcher ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_preregistration_submit: post: tags: - datarequest summary: 'Persist a preregistration to disk. ' requestBody: required: true content: application/json: schema: type: object required: - data - request_id properties: data: type: object description: Contents of the preregistration default: null nullable: false request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_preregistration_get: post: tags: - datarequest summary: 'Retrieve a preregistration. ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_preregistration_confirm: post: tags: - datarequest summary: 'Set the status of a submitted datarequest to PREREGISTRATION_CONFIRMED. :param request_id: Unique identifier of the data request' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_dta_upload_permission: post: tags: - datarequest summary: ' revoked ("revoke") ' requestBody: required: true content: application/json: schema: type: object required: - request_id - action properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false action: type: string description: String specifying whether write permission must be granted ("grant") or default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_dta_post_upload_actions: post: tags: - datarequest summary: 'Grant read permissions on the DTA to the owner of the associated data request. ' requestBody: required: true content: application/json: schema: type: object required: - request_id - filename properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false filename: type: string description: Filename of DTA default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_dta_path_get: post: tags: - datarequest summary: '' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: (undocumented) default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_signed_dta_upload_permission: post: tags: - datarequest summary: ' revoked ("revoke") ' requestBody: required: true content: application/json: schema: type: object required: - request_id - action properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false action: type: string description: String specifying whether write permission must be granted ("grant") or default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_signed_dta_post_upload_actions: post: tags: - datarequest summary: 'Grant read permissions on the signed DTA to the datamanagers group. ' requestBody: required: true content: application/json: schema: type: object required: - request_id - filename properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false filename: type: string description: Filename of signed DTA default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_signed_dta_path_get: post: tags: - datarequest summary: 'Get path to signed DTA ' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500' /datarequest_data_ready: post: tags: - datarequest summary: 'Set the status of a submitted datarequest to DATA_READY. :param request_id: Unique identifier of the data request' requestBody: required: true content: application/json: schema: type: object required: - request_id properties: request_id: type: string description: Unique identifier of the data request default: null nullable: false responses: '200': description: Success content: application/json: schema: type: object properties: status: type: string status_info: type: string nullable: true data: nullable: true '400': $ref: '#/components/responses/status_400' '500': $ref: '#/components/responses/status_500'