[
  {
    "name": "create_collections",
    "description": "Retrieves a list collections, either public or related to the user\n#### Permissions\nAnonymous users are able to see all public collections at this endpoint. Logged in users will only be able to see their own content.\n\nComments on private nodes are only visible to contributors and administrators on the parent node.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of comment objects. Each resource in the array is a separate comment object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "POST",
      "path": "/collections/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_collections_collected_metadata",
    "description": "List of user created metadata for entities within a collection.\n#### Permissions\nTo edit this collection a user must have collections write permissions\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of nodes ids.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/collections/{collection_id}/collected_metadata/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_collections_collected_metadata_by_collection_id_cgm_id",
    "description": "List of user created metadata for entities within a collection.\n#### Permissions\nTo edit this collection a user must have collections write permissions\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of nodes ids.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        },
        "cgm_id": {
          "type": "string",
          "description": "A short id for that piece of metadata"
        }
      },
      "required": [
        "collection_id",
        "cgm_id"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/collections/{collection_id}/collected_metadata/{cgm_id}",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_collections_collected_metadata_relationships_subjects",
    "description": "#### Permissions\nThis is editable for a user with a write permission for this collection.\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of nodes ids.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        },
        "cgm_id": {
          "type": "string",
          "description": "A short id for that piece of metadata"
        }
      },
      "required": [
        "collection_id",
        "cgm_id"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/collections/{collection_id}/collected_metadata/{cgm_id}/relationships/subjects/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_collections_linked_nodes_relationships",
    "description": "This endpoint allow users to a add a node to a collection by issuing a POST request.\n#### Permissions\nThis returns all public nodes associated with this collection.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of comment objects. Each resource in the array is a separate comment object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/collections/{collection_id}/linked_nodes/relationships/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_collections_linked_registrations_relationships",
    "description": "This endpoint allow users to a add a registration to a collection by issuing a POST request.\n#### Permissions\nThis returns all public registrations associated with this collection.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of comment objects. Each resource in the array is a separate comment object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/collections/{collection_id}/linked_registrations/relationships/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_draft_registrations",
    "description": "This creates a Draft Registration that can be used to edit and register research.\nDraft Registrations contain Registration questions that will become part of the Registration. A Registration is a frozen version of the project that can never be deleted, but can be withdrawn and have it's metadata edited.\nA Draft Registration created by this endpoint will not have a Project linked with it by default, but if the user includes a `branched_from` attribute in their Draft Registration creation payload with the value of the `branched_from` being guid of a Project they have permissions for the Draft Registration will be linked to the Project. If you linked your Draft Registration on a Project, your original Project remains editable and will now have the Draft Registration linked to it. \n#### Permissions\nAny user can create a Draft Registration. If the `branched_from` attribute is provided, then the user must be an ADMIN contributor on the Project being registered.\n#### Required\nRequired fields for creating a Draft Registration include:\n\n&nbsp;&nbsp;&nbsp;&nbsp;`schema_id`\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the created Draft Registration, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "attributes": {
          "type": "object",
          "description": "The properties of the Draft Registration entity."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the draft registration entity."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the draft registration entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the draft registration entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the draft registration entity (`draft_registrations`)."
        }
      },
      "required": [
        "attributes",
        "id",
        "links",
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/draft_registrations/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_draft_registrations_contributors",
    "description": "Adds a contributor to a Draft Registration, contributors can view, edit, register or delete a Draft Registration depending on their permissions.\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\" contributors. From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed on the project overview page on the OSF, while non-bibliographic contributors are not.\n#### Permissions\nOnly project administrators can add contributors to a Draft Registration.\n#### Required\nA relationship object with a `data` key, containing the `users` type and valid user ID is required.\nAll attributes describing the relationship between the node and the user are optional.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the new contributor, if the request is successful.\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the Draft Registration."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the contributor entity."
        },
        "id": {
          "type": "string",
          "description": "The identifier of the contributor entity. Contributor identifiers have the form {node_id}-{user_id}."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the contributor entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the contributor entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the contributor entity (`contributors`)."
        }
      },
      "required": [
        "draft_id",
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/draft_registrations/{draft_id}/contributors/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_nodes",
    "description": "Creates a new node.\n\nOn the OSF, nodes are considered **projects** or **components**. The difference between a project and a component is that a project is a top-level node, and a component is a child of a project.\n\nAdditionally, nodes have a `category` field that includes **project** as an option. The categorization determines what icon is displayed with the node on the OSF, and helps with search organization. Projects (top-level nodes) may have a category other than project, and components (children) may have a category of **project**.\n#### Required\nRequired fields for creating a node include:\n\n&nbsp;&nbsp;&nbsp;&nbsp`title`\n\n&nbsp;&nbsp;&nbsp;&nbsp`category`\n\nNote: Nodes default to **private** unless the `public` field is explicitly set to **true** in the request payload.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the created node, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "attributes": {
          "type": "object",
          "description": "The properties of the node entity."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the node entity."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the node entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the node entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the node entity (`nodes`)."
        }
      },
      "required": [
        "attributes",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/nodes/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_nodes_children",
    "description": "Creates a new child node.\n\nNote: Creating a child node via this endpoint will function the same as creating a node via the node list endpoint, but the child node will have the given node set as its parent.\n#### Permissions\nOnly write contributors may create children nodes.\n#### Required\nRequired fields for creating a node include:\n\n&nbsp;&nbsp;&nbsp;&nbsp`title`\n\n&nbsp;&nbsp;&nbsp;&nbsp`category`\n\nNote: nodes default to **private** unless the `public` field is explicitly set to **true** in the request payload.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the created node, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the node entity."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the node entity."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the node entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the node entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the node entity (`nodes`)."
        }
      },
      "required": [
        "node_id",
        "attributes",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/nodes/{node_id}/children/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_nodes_comments",
    "description": "Create a comment on a given node overview page or a reply to a comment on that node.\n\nTo create a comment on the node overview page, the target `type` would be \"nodes\" and the target `id` would be the node `id`.\n\nTo reply to a comment on this node, the target `type` would be \"comments\" and the target `id` would be the `id` of the comment to reply to.\n#### Required\nA relationship object with a `data` key, containing the target (`comments` or `nodes`) type and a target `id` is required.\nIn addition, the `content` attribute describing the relationship between the node and the comment is required.\n#### Returns\nReturns a JSON object with a data key containing the representation of the new comment, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node you want to comment on."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the comment entity."
        },
        "id": {
          "type": "string",
          "description": "The identifier of the comment entity."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the comment entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the comment entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the comment entity (`comments`)."
        }
      },
      "required": [
        "node_id",
        "id"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/nodes/{node_id}/comments/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_nodes_contributors",
    "description": "Adds a contributor to a node, effectively creating a relationship between the node and a user.\n\nContributors are users who can make changes to the node or, in the case of private nodes, have read access to the node.\n\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\" contributors. From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed on the project overview page on the OSF, while non-bibliographic contributors are not.\n#### Permissions\nOnly project administrators can add contributors to a node.\n#### Required\nA relationship object with a `data` key, containing the `users` type and valid user ID is required.\n\nAll attributes describing the relationship between the node and the user are optional.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the new contributor, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the contributor entity."
        },
        "id": {
          "type": "string",
          "description": "The identifier of the contributor entity. Contributor identifiers have the form {node_id}-{user_id}."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the contributor entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the contributor entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the contributor entity (`contributors`)."
        }
      },
      "required": [
        "node_id",
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/nodes/{node_id}/contributors/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_nodes_draft_registrations",
    "description": "Initiate a draft registration of the current node.\nDraft Registrations contain Registration questions that will become part of the Registration. A Registration is a frozen version of the project that can never be deleted, but can be withdrawn and have it's metadata edited.\n\nYour original project remains editable but will now have the draft registration linked to it.\n#### Permissions\nOnly project administrators may view create registrations.\n#### Required\nRequired fields for creating a draft registration include:\n\n&nbsp;&nbsp;&nbsp;&nbsp;`schema_id`\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the created draft registration, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the Draft Registration entity."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the draft registration entity."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the draft registration entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the draft registration entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the draft registration entity (`draft_registrations`)."
        }
      },
      "required": [
        "node_id",
        "attributes",
        "id",
        "links",
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/nodes/{node_id}/draft_registrations/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_nodes_forks",
    "description": "Creates a fork of the given node.\n\nForking a project creates a copy of an existing node and all of its contents. The fork always points back to the original node, forming a network of nodes.\n\nYou might use a fork to copy another's work to build on and extend. For example, a professor may create an OSF project of materials for individual student use. Each student forks the project to have his or her own copy of the materials to start his/her own work.\n\nWhen creating a fork, your fork will only contain public components of the current node and components for which you are a contributor. Private components that you do not have access to will not be forked.\n#### Required\nThere are no required attributes when creating a fork, as all of the forked node's attributes will be copied from the current node.\n\nThe `title` field is optional, with the default title being \"Fork of \" prepended to the current node's title.\n#### Returns\nReturns a JSON object with a `data` key containing the complete srepresentation of the forked node, if the request is successful.\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the node entity."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the node entity."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the node entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the node entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the node entity (`nodes`)."
        }
      },
      "required": [
        "node_id",
        "attributes",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/nodes/{node_id}/forks/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_preprints",
    "description": "Creates a new preprint.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the created preprint, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes]() to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "attributes": {
          "type": "object",
          "description": "The properties of the preprint entity."
        },
        "id": {
          "type": "string",
          "description": "The identifier of the preprint entity."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the preprint entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the preprint entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the preprint entity (`preprints`)."
        }
      },
      "required": [
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/preprints/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_preprints_contributors",
    "description": "Adds a contributor to a Preprint, effectively creating a relationship between the Preprint and a user.\n\nContributors are users who can make changes to the Preprint. Contributors with WRITE permissions may edit preprint details, and ADMIN Contributors may add or remove other Contributors.\n\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\" contributors. From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed on the project overview page on the OSF, while non-bibliographic contributors are not.\n#### Permissions\nOnly project administrators can add contributors to a Preprint.\n#### Required\nA relationship object with a `data` key, containing the `users` type and valid user ID is required.\n\nAll attributes describing the relationship between the Preprint and the user are optional.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the new contributor, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_id": {
          "type": "string",
          "description": "The unique identifier of the Preprint."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the contributor entity."
        },
        "id": {
          "type": "string",
          "description": "The identifier of the contributor entity. Contributor identifiers have the form {preprint_id}-{user_id}."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the contributor entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the contributor entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the contributor entity (`contributors`)."
        }
      },
      "required": [
        "preprint_id",
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/preprints/{preprint_id}/contributors/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_registrations_forks",
    "description": "Creates a fork of the given registration.\n\nForking a project creates a copy of an existing registration and all of its contents. The fork always points back to the original registration, forming a network of registrations.\n\nYou might use a fork to copy another's work to build on and extend. For example, a professor may create an OSF project of materials for individual student use. Each student forks the project to have his or her own copy of the materials to start his/her own work.\n\nWhen creating a fork, your fork will only contain public components of the current registration and components for which you are a contributor. Private components that you do not have access to will not be forked.\n#### Required\nThere are no required attributes when creating a fork, as all of the forked registration's attributes will be copied from the current registration.\n\nThe `title` field is optional, with the default title being \"Fork of \" prepended to the current registration's title.\n#### Returns\nReturns a JSON object with a `data` key containing the complete representation of the forked registration, if the request is successful.\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the registration entity."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the registrations entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the registration entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the registration entity (`registrations`)."
        }
      },
      "required": [
        "registration_id",
        "attributes",
        "id",
        "links",
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/registrations/{registration_id}/forks/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_schema_responses",
    "description": "This endpoint creates a new Schema Response with an `in_progress` state. A new response can only be created if the current schema response is in an `approved` state.\n#### Returns\nReturns a JSON object with a `data` key containing an updated representation of the requested Schema Response, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "attributes": {
          "type": "object",
          "description": "The properties of the Schema Response."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the Schema Response."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the Schema Response entity."
        },
        "relationships": {
          "type": "object",
          "description": "Links to other entities or entity collections that have a relationship to the file entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the Schema Response (`schema-response`)."
        }
      },
      "required": [
        "attributes",
        "type"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/schema_responses/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_schema_responses_actions",
    "description": "This creates a new Schema Response Action in order to trigger a state transition for a Schema Response.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested Schema Response Actions, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "schema_response_id": {
          "type": "string",
          "description": "The unique identifier of the Registration Schema example `6176c9d45e01f100091d4f94`."
        }
      },
      "required": [
        "schema_response_id"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/schema_responses/{schema_response_id}/actions/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "delete_collections",
    "description": "Deletes a collection, if the user has appropriate permissions.\n#### Permissions\nUsers must have write permissions on a collection in order to delete it\n#### Returns\nNothing is returned in the body",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "DELETE",
      "path": "/collections/{collection_id}/",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "delete_collections_collected_metadata",
    "description": "#### Permissions\nOnly a user with collection admin permissions can delete collected metadata\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of nodes ids.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        },
        "cgm_id": {
          "type": "string",
          "description": "A short id for that piece of metadata"
        }
      },
      "required": [
        "collection_id",
        "cgm_id"
      ]
    },
    "x-dyph": {
      "method": "DELETE",
      "path": "/collections/{collection_id}/collected_metadata/{cgm_id}",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "delete_collections_linked_nodes_relationships",
    "description": "This removes associated nodes from a collection\n#### Permissions\nAny user with write permissions on this collection should be to remove nodes from this collection.\n#### Returns\nNothing in the response body.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "DELETE",
      "path": "/collections/{collection_id}/linked_nodes/relationships/",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "delete_collections_linked_registrations_relationships",
    "description": "This removes associated registrations from a collection\n#### Permissions\nAny user with write permissions on this collection should be to remove registrations from this collection.\n#### Returns\nNothing in the response body.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "DELETE",
      "path": "/collections/{collection_id}/linked_registrations/relationships/",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "delete_comments",
    "description": "Deletes a comment. This action can be undone by setting deleted to False in a comment update request.\n#### Returns\nIf the request is successful, no content is returned.\n\nIf the request is unsuccessful, a JSON object with an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "comment_id": {
          "type": "string",
          "description": "The unique identifier of the comment you wish to delete."
        }
      },
      "required": [
        "comment_id"
      ]
    },
    "x-dyph": {
      "method": "DELETE",
      "path": "/comments/{comment_id}/",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "delete_draft_registrations",
    "description": "Permanently deletes a draft registration. A draft that has already been registered cannot be deleted.\n#### Permissions\nOnly draft registration contributors with ADMIN permissions may delete draft registrations\n#### Returns\nIf the request is successful, no content is returned.\nIf the request is unsuccessful, a JSON object with an `errors` key containing information about the failure will be returned. Refer to the [list of error codes]() to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the draft registration."
        }
      },
      "required": [
        "draft_id"
      ]
    },
    "x-dyph": {
      "method": "DELETE",
      "path": "/draft_registrations/{draft_id}/",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "delete_nodes",
    "description": "Permanently deletes a node. This action cannot be undone.\n#### Permissions\nOnly project administrators may delete a node. Attempting to delete a node for which you are not an administrator will result in a **403 Forbidden** response.\n#### Returns\nIf the request is successful, no content is returned.\n\nIf the request is unsuccessful, a JSON object with an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "DELETE",
      "path": "/nodes/{node_id}/",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "delete_nodes_contributors",
    "description": "Removes a contributor from a node. This request only removes the relationship between the node and the user, it does not delete the user itself.\n\nA node must always have at least one admin, and attempting to remove the only admin from a node will result in a **400 Bad Request** response.\n#### Permissions\nA user can remove themselves as a node contributor. Otherwise, only project administrators can remove contributors.\n#### Returns\nIf the request is successful, no content is returned.\n\nIf the request is unsuccessful, a JSON object with an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        }
      },
      "required": [
        "node_id",
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "DELETE",
      "path": "/nodes/{node_id}/contributors/{user_id}/",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "delete_nodes_draft_registrations",
    "description": "Permanently deletes a draft registration. A draft that has already been registered cannot be deleted.\n#### Permissions\nOnly project administrators may delete draft registrations.\n#### Returns\nIf the request is successful, no content is returned.\n\nIf the request is unsuccessful, a JSON object with an `errors` key containing information about the failure will be returned. Refer to the [list of error codes]() to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the draft registration."
        }
      },
      "required": [
        "node_id",
        "draft_id"
      ]
    },
    "x-dyph": {
      "method": "DELETE",
      "path": "/nodes/{node_id}/draft_registrations/{draft_id}/",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "delete_schema_responses",
    "description": "This endpoint deletes a new Schema Response. Schema Responses can only be deleted in the `in_progress` state. Once a Schema Response is transitioned to an `approved` it is immutable and another Schema Response must be created to update the Schema Response for that registration.\n#### Returns\nReturns a JSON object with a `data` key containing an updated representation of the requested Schema Response, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "schema_response_id": {
          "type": "string",
          "description": "The unique identifier of the Registration Schema example `6176c9d45e01f100091d4f94`."
        }
      },
      "required": [
        "schema_response_id"
      ]
    },
    "x-dyph": {
      "method": "DELETE",
      "path": "/schema_responses/{schema_response_id}",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get",
    "description": "#### Returns\nA JSON object with `meta` and `links` keys.\n\nThe `meta` key contains information such as a welcome message from the API, the specified version of the request, and the full representation of the current user, if authentication credentials were provided in the request.\n\nThe `links` key contains links to the following entity collections: [addons](#tag/Addons), [collections](), [institutions](#tag/Institutions), [licenses](#tag/Licenses), [registration schemas](#tag/Registration Schemas), [nodes](#tag/Nodes), [registrations](#tag/Registrations), [users](#tag/Users)",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_actions",
    "description": "A log can have one of many actions. The complete list of loggable actions (in the format {identifier}: {description}) is as follows:\n* `project_created`: A Node is created\n* `project_registered`: A Node is registered\n* `project_deleted`: A Node is deleted\n* `created_from`: A Node is created using an existing Node as a template\n* `pointer_created`: A Pointer is created\n* `pointer_forked`: A Pointer is forked\n* `pointer_removed`: A Pointer is removed\n* `node_removed`: A component is deleted\n* `node_forked`: A Node is forked\n---\n* `made_public`: A Node is made public\n* `made_private`: A Node is made private\n* `tag_added`: A tag is added to a Node\n* `tag_removed`: A tag is removed from a Node\n* `edit_title`: A Node's title is changed\n* `edit_description`: A Node's description is changed\n* `updated_fields`: One or more of a Node's fields are changed\n* `external_ids_added`: An external identifier is added to a Node (e.g. DOI, ARK)\n* `view_only_link_added`: A view-only link was added to a Node\n* `view_only_link_removed`:  A view-only link was removed from a Node\n---\n* `contributor_added`: A Contributor is added to a Node\n* `contributor_removed`: A Contributor is removed from a Node\n* `contributors_reordered`: A Contributor's position in a Node's bibliography is changed\n* `permissions_updated`: A Contributor`s permissions on a Node are changed\n* `made_contributor_visible`: A Contributor is made bibliographically visible on a Node\n* `made_contributor_invisible`: A Contributor is made bibliographically invisible on a Node\n---\n* `wiki_updated`: A Node's wiki is updated\n* `wiki_deleted`: A Node's wiki is deleted\n* `wiki_renamed`: A Node's wiki is renamed\n* `made_wiki_public`: A Node's wiki is made public\n* `made_wiki_private`: A Node's wiki is made private\n---\n* `addon_added`: An add-on is linked to a Node\n* `addon_removed`: An add-on is unlinked from a Node\n* `addon_file_moved`: A File in a Node's linked add-on is moved\n* `addon_file_copied`: A File in a Node's linked add-on is copied\n* `addon_file_renamed`: A File in a Node's linked add-on is renamed\n* `node_authorized`: An addon is authorized for a project\n* `node_deauthorized`: An addon is deauthorized for a project\n* `folder_created`: A Folder is created in a Node's linked add-on\n* `file_added`: A File is added to a Node's linked add-on\n* `file_updated`: A File is updated on a Node's linked add-on\n* `file_removed`: A File is removed from a Node's linked add-on\n* `file_restored`: A File is restored in a Node's linked add-on\n---\n* `comment_added`: A Comment is added to some item\n* `comment_removed`: A Comment is removed from some item\n* `comment_updated`: A Comment is updated on some item\n---\n* `embargo_initiated`: An embargoed Registration is proposed on a Node\n* `embargo_approved`: A proposed Embargo of a Node is approved\n* `embargo_cancelled`: A proposed Embargo of a Node is cancelled\n* `embargo_completed`: A proposed Embargo of a Node is completed\n* `retraction_initiated`: A Withdrawal of a Registration is proposed\n* `retraction_approved`: A Withdrawal of a Registration is approved\n* `retraction_cancelled`: A Withdrawal of a Registration is cancelled\n* `registration_initiated`: A Registration of a Node is proposed\n* `registration_approved`: A proposed Registration is approved\n* `registration_cancelled`: A proposed Registration is cancelled",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/actions/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_addons",
    "description": "A paginated list of addons configurable with the OSF, for read purposes only.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 addons. Each resource in the array is a separate addon object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Errors\nThis request should never return an error.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/addons/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_citations_styles",
    "description": "A paginated list of all standard citation styles available for rendering citations.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 citation styles. Each resource in the array is a separate citation syle and contains the full representation of the citation style object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.\n#### Filtering\nYou can optionally request that the response only include citation styles that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/citations/styles/?filter[title]=open.\n\nCitation styles may be filtered by their `id`, `title`, `short-title`, and `summary`.\n#### Errors\nThis request should never return an error.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/citations/styles/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_citations_styles_by_style_id",
    "description": "Retrieves the details of a citation style.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested citation style, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "style_id": {
          "type": "string",
          "description": "The unique identifier of the citation style."
        }
      },
      "required": [
        "style_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/citations/styles/{style_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_collections",
    "description": "Retrieves a list collections, either public or related to the user\n#### Permissions\nAnonymous users are able to see all public collections at this endpoint. Logged in users will only be able to see their own content.\n\nComments on private nodes are only visible to contributors and administrators on the parent node.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_collections_by_collection_id",
    "description": "Retrieves a collection, if the user has appropriate permissions.\n\n#### Permissions\nAnonymous users are able to see all public collections at this endpoint. Logged in users will only be able to see their own content.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/{collection_id}/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_collections_collected_metadata",
    "description": "List of user created metadata for entities within a collection.\n#### Permissions\nIn order to view this metadata it must be public or a user must have read permissions for collection.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of nodes ids.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Errors\nThis request should never return an error.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/{collection_id}/collected_metadata/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_collections_collected_metadata_by_collection_id_cgm_id",
    "description": "#### Permissions\nIn order to view this metadata it must be public or a user must have read permissions for collection.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of nodes ids.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Errors\nThis request should never return an error.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        },
        "cgm_id": {
          "type": "string",
          "description": "A short id for that piece of metadata"
        }
      },
      "required": [
        "collection_id",
        "cgm_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/{collection_id}/collected_metadata/{cgm_id}",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_collections_collected_metadata_relationships_subjects",
    "description": "#### Permissions\nThis is public for a logged out user when an entity is public.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of nodes ids.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        },
        "cgm_id": {
          "type": "string",
          "description": "A short id for that piece of metadata"
        }
      },
      "required": [
        "collection_id",
        "cgm_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/{collection_id}/collected_metadata/{cgm_id}/relationships/subjects/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_collections_collected_metadata_subjects",
    "description": "#### Permissions\nIn order to view these subject it must be a public collection or a user must have read permissions for collection.\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of nodes ids.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Errors\nThis request should never return an error, other then permissions errors.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        },
        "cgm_id": {
          "type": "string",
          "description": "A short id for that piece of metadata"
        }
      },
      "required": [
        "collection_id",
        "cgm_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/{collection_id}/collected_metadata/{cgm_id}/subjects/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_collections_linked_nodes",
    "description": "List of all nodes linked to the given collection.\n#### Permissions\nThis returns all public nodes associated with this collection.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 nodes. Each resource in the array is a separate node object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/{collection_id}/linked_nodes",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_collections_linked_nodes_relationships",
    "description": "List of all the node ids linked to the given collection.\n#### Permissions\nThis returns all public nodes associated with this collection.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of nodes ids.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/{collection_id}/linked_nodes/relationships/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_collections_linked_preprints",
    "description": "List of all preprints linked to the given collection.\n#### Permissions\nThis returns all public preprints associated with this collection.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 nodes. Each resource in the array is a separate node object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/{collection_id}/linked_preprints/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_collections_linked_registrations",
    "description": "List of all registrations linked to the given collection.\n#### Permissions\nThis returns all public registrations associated with this collection.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 nodes. Each resource in the array is a separate node object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/{collection_id}/linked_registrations/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_collections_linked_registrations_relationships",
    "description": "List of all the registration ids linked to the given collection.\n#### Permissions\nThis returns all public registrations associated with this collection.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of nodes ids.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "collection_id": {
          "type": "string",
          "description": "A short id for that collection"
        }
      },
      "required": [
        "collection_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/collections/{collection_id}/linked_registrations/relationships/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_comments",
    "description": "Retrieves the details of a comment\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested comment, if the request was successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "comment_id": {
          "type": "string",
          "description": "The unique identifier of the comment you wish to retrieve."
        }
      },
      "required": [
        "comment_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/comments/{comment_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_draft_registrations",
    "description": "Retrieve a list of all currently available Draft Registrations for that user.\n#### Permissions\nOnly Draft Registration contributors may view draft registrations.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested draft registration, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/draft_registrations/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_draft_registrations_by_draft_id",
    "description": "Retrieve the details of a given Draft Registration\nDraft Registrations contain Registration questions that will become part of the Registration. A Registration is a frozen version of the project that can never be deleted, but can be withdrawn and have it's metadata edited.\n\nIf you based your Draft Registration on a Project, your original Project remains editable but will now have the Draft Registration linked to it.\n#### Permissions\nOnly draft registration contributors may view draft registrations.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested draft registration, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the draft registration."
        }
      },
      "required": [
        "draft_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/draft_registrations/{draft_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_draft_registrations_contributors",
    "description": "Retrieves the details of all given Contributors for a Draft Registration.\nContributors are users who can make changes to the Draft Registration.\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\". From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed on the project overview page on the OSF, while non-bibliographic contributors are not.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the Draft Registration."
        }
      },
      "required": [
        "draft_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/draft_registrations/{draft_id}/contributors/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_draft_registrations_contributors_by_draft_id_user_id",
    "description": "Retrieves the details of a given contributor.\n\nContributors are users who can view or edit to the Draft Registrations.\n\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\". From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed on the project overview page on the OSF, while non-bibliographic contributors are not.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the Draft Registration."
        },
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the Contributor."
        }
      },
      "required": [
        "draft_id",
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/draft_registrations/{draft_id}/contributors/{user_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_draft_registrations_institutions",
    "description": "Once a properly authenticated user has marked their registration as affiliated with an institution, that institution and any others added will appear in this list.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the draft registration."
        }
      },
      "required": [
        "draft_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/draft_registrations/{draft_id}/institutions/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_draft_registrations_subjects",
    "description": "This retrieves a list of subjects associated with a Draft Registration. Subjects are formatted here in a flat paginated list, but are hierarchical and nested by specificity of subject matter.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the draft registration."
        }
      },
      "required": [
        "draft_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/draft_registrations/{draft_id}/subjects/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_files",
    "description": "Retrieves the details of a file (or folder)\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested file, if the request was successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n### Waterbutler API actions\n\nFiles can be modified through the Waterbutler API routes found in `links` (`new_folder`, `move`, `upload`, `download`, and `delete`).\n\n#### Download (files)\n\nTo download a file, issue a GET request against the download link. The response will have the Content-Disposition header set, which will will trigger a download in a browser.\n\n#### Create Subfolder (folders)\n\nYou can create a subfolder of an existing folder by issuing a PUT request against the new_folder link. The ?kind=folder portion of the query parameter is already included in the new_folder link. The name of the new subfolder should be provided in the name query parameter. The response will contain a WaterButler folder entity. If a folder with that name already exists in the parent directory, the server will return a 409 Conflict error response.\n\n#### Upload New File (folders)\n\n\n  To upload a file to a folder, issue a PUT request to the folder's upload link with the raw file data in the request body, and the kind and name query parameters set to 'file' and the desired name of the file. The response will contain a WaterButler file entity that describes the new file. If a file with the same name already exists in the folder, the server will return a 409 Conflict error response.\n\n\n#### Update Existing File (file)\n\nTo update an existing file, issue a PUT request to the file's upload link with the raw file data in the request body and the kind query parameter set to \"file\". The update action will create a new version of the file. The response will contain a WaterButler file entity that describes the updated file.\n\n#### Rename (files, folders)\n\nTo rename a file or folder, issue a POST request to the move link with the action body parameter set to \"rename\" and the rename body parameter set to the desired name. The response will contain either a folder entity or file entity with the new name.\n\n#### Move & Copy (files, folders)\n\nMove and copy actions both use the same request structure, a POST to the move url, but with different values for the action body parameters. The path parameter is also required and should be the OSF path attribute of the folder being written to. The rename and conflict parameters are optional. If you wish to change the name of the file or folder at its destination, set the rename parameter to the new name. The conflict param governs how name clashes are resolved. Possible values are replace and keep. replace is the default and will overwrite the file that already exists in the target folder. keep will attempt to keep both by adding a suffix to the new file's name until it no longer conflicts. The suffix will be ' (x)' where x is a increasing integer starting from 1. This behavior is intended to mimic that of the OS X Finder. The response will contain either a folder entity or file entity with the new name.\nFiles and folders can also be moved between nodes and providers. The resource parameter is the id of the node under which the file/folder should be moved. It must agree with the path parameter, that is the path must identify a valid folder under the node identified by resource. Likewise, the provider parameter may be used to move the file/folder to another storage provider, but both the resource and path parameters must belong to a node and folder already extant on that provider. Both resource and provider default to the current node and providers.\nIf a moved/copied file is overwriting an existing file, a 200 OK response will be returned. Otherwise, a 201 Created will be returned.\n\n#### Delete (file, folders)\n\nTo delete a file or folder send a DELETE request to the delete link. Nothing will be returned in the response body.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "file_id": {
          "type": "string",
          "description": "The unique identifier of the file you wish to retrieve."
        }
      },
      "required": [
        "file_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/files/{file_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_files_versions",
    "description": "A paginated list of all file versions.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 file versions. Each resource in the array is a separate file version object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "file_id": {
          "type": "string",
          "description": "The unique identifier of the file from which you want to retrieve versions."
        }
      },
      "required": [
        "file_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/files/{file_id}/versions/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_files_versions_by_file_id_version_id",
    "description": "Retrieves the details of a file version\n#### Returns\n\nReturns a JSON object with a `data` key containing the representation of the requested file, if the request was successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "file_id": {
          "type": "string",
          "description": "The unique identifier of the file from which you want to retrieve versions."
        },
        "version_id": {
          "type": "string",
          "description": "The file version number you want to retrieve."
        }
      },
      "required": [
        "file_id",
        "version_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/files/{file_id}/versions/{version_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_institutions",
    "description": "A paginated list of all verified institutions.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 institutions. Each resource in the array is a separate institution object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.\n#### Filtering\nYou can optionally request that the response only include institutions that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/institutions/?filter[id]=cos.\n\nInstitutions may be filtered by their `id`, `name`, and `auth_url`",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/institutions/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_institutions_by_institution_id",
    "description": "Retrieves the details of an institution\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested institution, if the request was successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "institution_id": {
          "type": "string",
          "description": "The unique identifier of the institution you wish to retrieve."
        }
      },
      "required": [
        "institution_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/institutions/{institution_id}/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_institutions_nodes",
    "description": "A paginated list of all nodes affiliated with an institution.\n#### Versioning\nAs of version `2.2`, affiliated components (in addition to affiliated top-level projects) are returned from this endpoint.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 nodes. Each resource in the array is a separate nodes object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n#### Filtering\nYou can optionally request that the response only include nodes that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/institutions/cos/nodes?filter[title]=science.\n\nNodes may be filtered by their `id`, `title`, `description`, `public`, `tags`, `category`, `date_created`, `date_modified`, `root`, `parent`, `contributors`, and `preprint`",
    "inputSchema": {
      "type": "object",
      "properties": {
        "institution_id": {
          "type": "string",
          "description": "The unique identifier of the institution you wish to retrieve."
        }
      },
      "required": [
        "institution_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/institutions/{institution_id}/nodes/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_institutions_registrations",
    "description": "A paginated list of all registrations affiliated with an institution.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 registrations. Each resource in the array is a separate users object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n#### Filtering\nYou can optionally request that the response only include registrations that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/institutions/cos/registrations?filter[title]=science.\n\nRegistrations may be filtered by their  `id`, `title`, `description`, `public`, `tags`, `category`, `date_created`, `date_modified`, `root`, `parent`, `contributors`, and `preprint`",
    "inputSchema": {
      "type": "object",
      "properties": {
        "institution_id": {
          "type": "string",
          "description": "The unique identifier of the institution you wish to retrieve."
        }
      },
      "required": [
        "institution_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/institutions/{institution_id}/registrations/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_institutions_users",
    "description": "A paginated list of all users affiliated with an institution.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 users. Each resource in the array is a separate users object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n#### Filtering\nYou can optionally request that the response only include users that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/institutions/cos/users?filter[family_name]=Nosek.\n\nUsers may be filtered by their `id`, `full_name`, `given_name`, `middle_names`, and `family_name`",
    "inputSchema": {
      "type": "object",
      "properties": {
        "institution_id": {
          "type": "string",
          "description": "The unique identifier of the institution you wish to retrieve."
        }
      },
      "required": [
        "institution_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/institutions/{institution_id}/users/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_license",
    "description": "Retrieves the details of a license.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested license, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "license_id": {
          "type": "string",
          "description": "The unique identifier of the license."
        }
      },
      "required": [
        "license_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/license/{license_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_licenses",
    "description": "A paginated list of licenses. The returned licenses are sorted by their name.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\nThe `data` key contains an array of 10 licenses. Each resource in the array is a separate license object and contains the full representation of the license, meaning additional requests to a license's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.\n#### Filtering\nYou can optionally request that the response only include licenses that match your filters by utilizing the `filter` query parameter, e.g. [https://api.osf.io/v2/licenses/?filter[name]=apache](https://api.osf.io/v2/licenses/?filter[name]=apache).\n\nLicenses may be filtered by their `id`, and `name`.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/licenses/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_logs",
    "description": "Retrieves the details of a log.\nA log is permanent immutable record of a node's history. A log is created when a user performs one of many actions. See the [actions](#Logs_logs_actions) section for more details.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested log, if the request was successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "log_id": {
          "type": "string",
          "description": "The unique identifier of the log you wish to retrieve."
        }
      },
      "required": [
        "log_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/logs/{log_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_nodes",
    "description": "A paginated list of nodes, representing projects and components, on the OSF.\n\nThe returned nodes are those which are public or which the user has access to view.\n\nThe returned nodes are sorted by their `date_modified`, with the most recently updated nodes appearing first.\n\nRegistrations cannot be accessed through this endpoint (use the [registrations](#tag/Registrations) endpoints instead).\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 nodes. Each resource in the array is a separate node object and contains the full representation of the node, meaning additional requests to a node's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.\n#### Filtering\nYou can optionally request that the response only include nodes that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/nodes/?filter[title]=reproducibility.\n\nNodes may be filtered by their `id`, `title`, `category`, `description`, `public`, `tags`, `date_created`, `date_modified`, `root`, `parent`, `preprint`, and `contributors`.\n\nMost fields are string fields and will be filtered using simple substring matching. Public and preprint are boolean fields, and can be filtered using truthy values, such as **true**, **false**, **0** or **1**. Note that quoting true or false in the query will cause the match to fail.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_addons",
    "description": "A paginated list of addons connected to the given node or project.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of at most 10 addon objects. Each resource in the array is a separate addon object and contains the full representation of the addon, meaning additional requests to a addon's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/addons/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_addons_by_node_id_provider",
    "description": "Retrieve details of an individual addon connected to this node.\n#### Permissions\nNodeSettings that are attached to public nodes will give read-only access to everyone. Private nodes require explicit read permission. Write and admin access are the same for public and private nodes. Administrators on a parent node have implicit read permissions for all child nodes.\nAny users with write or admin access to the node are able to deauthorize an enabled addon, but only the addon authorizer is able to change the configuration (i.e. selected folder) of an already-configured NodeSettings entity.\n#### Returns\nReturns a JSON object with a `data` key containing the details of the requested addon, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the addon."
        }
      },
      "required": [
        "node_id",
        "provider"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/addons/{provider}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_nodes_addons_folders",
    "description": "A paginated list of folders retrieved from the associated third-party (provider) service.\n#### Permissions\nFolders are visible only to the user that authorized the addon.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of addon folder objects. Each resource in the array is a separate addon folder object and contains the full representation of the addon folder, meaning additional requests to a addon folder's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the provider"
        }
      },
      "required": [
        "node_id",
        "provider"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/addons/{provider}/folders/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_nodes_by_node_id",
    "description": "Retrieves the details of a given node (project or component).\n#### Permissions\nOnly project contributors may retrieve the details of a private node. Attempting to retreive a private node for which you are not a contributor will result in a **403 Forbidden** response.\n\nAuthentication is not required to view the details of a public node, as public nodes give read-only access to everyone.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested node, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_children",
    "description": "A paginated list of the next level child nodes for the given node. The returned nodes are sorted by their `date_modified`, with the most recently updated child nodes appearing first.\n\nThe list will include child nodes that are public, as well as child nodes that are private, if the authenticated user has permission to view them.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 child nodes. If the given node has zero child nodes, the `data` key will contain an empty array. Each resource in the array is a separate node object and contains the full representation of the child node, meaning additional requests to the child node's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.\n#### Filtering\nYou can optionally request that the response only include nodes that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/nodes/ezcuj/children/?filter[title]=reproducibility.\n\nNodes may be filtered by their `id`, `title`, `category`, `description`, `public`, `tags`, `date_created`, `date_modified`, `root`, `parent`, `preprint`, and `contributors`.\n\nMost fields are string fields and will be filtered using simple substring matching. Public and preprint are boolean fields, and can be filtered using truthy values, such as **true**, **false**, **0** or **1**. Note that quoting true or false in the query will cause the match to fail.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/children/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_citation",
    "description": "The citation details for a node, in CSL format.\n#### Returns\nReturns a JSON object with a `data` key that contains the representation of the details necessary for the node citation.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/citation/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_citation_by_node_id_style_id",
    "description": "The citation for a node in a specific style.\n#### Returns\nReturns a JSON object with a `data` key that contains the representation of the node citation, in the requested style.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "style_id": {
          "type": "string",
          "description": "The unique identifier of the citation style."
        },
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "style_id",
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/citation/{style_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_nodes_comments",
    "description": "A paginated list of comments related to a given node.\n\nThe returned comments are sorted by their creation date, with the most recent comments appearing first.\n#### Permissions\nComments on public nodes are given read-only access to everyone.\n\nIf the node comment-level is `private`, only contributors have permission to comment.\n\nIf the comment-level is `public`, any logged-in OSF user can comment.\n\nComments on private nodes are only visible to contributors and administrators on the parent node.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of comment objects. Each resource in the array is a separate comment object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include comments that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/nodes/ezcuj/comments/?filter[target_id]=jg7sezmdnt93\n\nNodes may be filtered by their `deleted`, `target_id`, `date_created`, `date_modified`.\n\nMost fields are string fields and will be filtered using simple substring matching. Public and preprint are boolean fields, and can be filtered using truthy values, such as **true**, **false**, **0** or **1**. Note that quoting `true` or `false` in the query will cause the match to fail.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/comments/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_contributors",
    "description": "A paginated list of the node's contributors, sorted by their index.\n\nContributors are users who can make changes to the node or, in the case of private nodes, have read access to the node.\n\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\". From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed on the project overview page on the OSF, while non-bibliographic contributors are not.\n\nNote that if an anonymous view_only key is being used to view the list of contributors, the user relationship will not be exposed and the contributor ID will be an empty string.\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 contributors. Each resource in the array contains the full representation of the contributor, meaning additional requests to a contributor's detail view are not necessary. Additionally, the full representation of the user this contributor represents is automatically embedded within the `data` key of the response.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include contributors that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/nodes/y9jdt/contributors/?filter[bibliographic]=true.\n\nContributors may be filtered by their `bibliographic` and `permission` attributes.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/contributors/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_contributors_by_node_id_user_id",
    "description": "Retrieves the details of a given contributor.\n\nContributors are users who can make changes to the node or, in the case of private nodes, have read access to the node.\n\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\". From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed on the project overview page on the OSF, while non-bibliographic contributors are not.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested contributor, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        }
      },
      "required": [
        "node_id",
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/contributors/{user_id}/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_draft_registrations",
    "description": "A paginated list of all of the draft registrations of a given node.\n\nDraft Registrations contain Registration questions that will become part of the Registration. A Registration is a frozen version of the project that can never be deleted, but can be withdrawn and have it's metadata edited.\n\nYour original project remains editable but will now have the draft registration linked to it.\n#### Permissions\nOnly project administrators may view draft registrations.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 draft registrations. Each resource in the array is a separate draft registration object and contains the full representation of the draft registration, meaning additional requests to a draft registration's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/draft_registrations/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_draft_registrations_by_node_id_draft_id",
    "description": "Retrieve the details of a given draft registration.\nDraft Registrations contain Registration questions that will become part of the Registration. A Registration is a frozen version of the project that can never be deleted, but can be withdrawn and have it's metadata edited.\n\nYour original project remains editable but will now have the draft registration linked to it.\n#### Permissions\nOnly project administrators may view draft registrations.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested draft registration, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the draft registration."
        }
      },
      "required": [
        "node_id",
        "draft_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/draft_registrations/{draft_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_nodes_files",
    "description": "List of all storage providers that are configured for this node\n\nUsers of the OSF may access their data on a [number of cloud-storage services](https://api.osf.io/v2/#storage-providers) that have integrations with the OSF. We call these **providers**. By default, every node has access to the OSF-provided storage but may use as many of the supported providers as desired.\n\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of files. Each resource in the array is a separate file object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nNote: In the OSF filesystem model, providers are treated as folders, but with special properties that distinguish them from regular folders. Every provider folder is considered a root folder, and may not be deleted through the regular file API.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/files/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_files_by_node_id_provider",
    "description": "List of all the files/folders that are attached to your project for a given storage provider.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of files. Each resource in the array is a separate file object and contains the full representation of the file.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\n#### Filtering\n\nYou can optionally request that the response only include files that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/nodes/ezcuj/files/osfstorage/?filter[kind]=file\n\nNode files may be filtered by `id`, `name`, `node`, `kind`, `path`, `provider`, `size`, and `last_touched`.\n\n### Waterbutler API actions\n\nFiles can be modified through the Waterbutler API routes found in `links` (`new_folder`, `move`, `upload`, `download`, and `delete`).\n\n#### Download (files)\n\nTo download a file, issue a GET request against the download link. The response will have the Content-Disposition header set, which will will trigger a download in a browser.\n\n#### Create Subfolder (folders)\n\nYou can create a subfolder of an existing folder by issuing a PUT request against the new_folder link. The ?kind=folder portion of the query parameter is already included in the new_folder link. The name of the new subfolder should be provided in the name query parameter. The response will contain a WaterButler folder entity. If a folder with that name already exists in the parent directory, the server will return a 409 Conflict error response.\n\n#### Upload New File (folders)\n\nTo upload a file to a folder, issue a PUT request to the folder's upload link with the raw file data in the request body, and the kind and name query parameters set to 'file' and the desired name of the file. The response will contain a WaterButler file entity that describes the new file. If a file with the same name already exists in the folder, the server will return a 409 Conflict error response.\n\n#### Update Existing File (file)\n\nTo update an existing file, issue a PUT request to the file's upload link with the raw file data in the request body and the kind query parameter set to \"file\". The update action will create a new version of the file. The response will contain a WaterButler file entity that describes the updated file.\n\n#### Rename (files, folders)\n\nTo rename a file or folder, issue a POST request to the move link with the action body parameter set to \"rename\" and the rename body parameter set to the desired name. The response will contain either a folder entity or file entity with the new name.\n\n#### Move & Copy (files, folders)\n\nMove and copy actions both use the same request structure, a POST to the move url, but with different values for the action body parameters. The path parameter is also required and should be the OSF path attribute of the folder being written to. The rename and conflict parameters are optional. If you wish to change the name of the file or folder at its destination, set the rename parameter to the new name. The conflict param governs how name clashes are resolved. Possible values are replace and keep. replace is the default and will overwrite the file that already exists in the target folder. keep will attempt to keep both by adding a suffix to the new file's name until it no longer conflicts. The suffix will be ' (x)' where x is a increasing integer starting from 1. This behavior is intended to mimic that of the OS X Finder. The response will contain either a folder entity or file entity with the new name.\nFiles and folders can also be moved between nodes and providers. The resource parameter is the id of the node under which the file/folder should be moved. It must agree with the path parameter, that is the path must identify a valid folder under the node identified by resource. Likewise, the provider parameter may be used to move the file/folder to another storage provider, but both the resource and path parameters must belong to a node and folder already extant on that provider. Both resource and provider default to the current node and providers.\nIf a moved/copied file is overwriting an existing file, a 200 OK response will be returned. Otherwise, a 201 Created will be returned.\n\n#### Delete (file, folders)\n\nTo delete a file or folder send a DELETE request to the delete link. Nothing will be returned in the response body.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the storage provider."
        }
      },
      "required": [
        "node_id",
        "provider"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/files/{provider}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_nodes_files_by_node_id_provider_path",
    "description": "Retrieves the details of a file attached to given node (project or component) for the given storage provider.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested file object, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the storage provider."
        },
        "path": {
          "type": "string",
          "description": "The unique identifier of the file path."
        }
      },
      "required": [
        "node_id",
        "provider",
        "path"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/files/{provider}/{path}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_nodes_files_providers",
    "description": "Retrieves the details of a storage provider enabled on this node.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested file object, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the storage provider."
        }
      },
      "required": [
        "node_id",
        "provider"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/files/providers/{provider}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_nodes_forks",
    "description": "A paginated list of the current node's forks. The returned fork nodes are sorted by their `forked_date`, with the most recently forked nodes appearing first.\n\nForking a project creates a copy of an existing node and all of its contents. The fork always points back to the original node, forming a network of nodes.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 forked nodes. If the current node has zero forked nodes, the `data` key will contain an empty array. Each resource in the array is a separate node object and contains the full representation of the forked node, meaning additional requests to the forked node's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/forks/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_identifiers",
    "description": "List all identifiers associated with a given node.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of identifiers. Each resource in the array is a separate identifier object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\n\nYou can optionally request that the response only include nodes that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/nodes/ezcuj/identifiers/?filter[category]=ark\n\nIdentifiers may be filtered by their `category` e.g `ark` or `doi`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/identifiers/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_institutions",
    "description": "List of all institutions affiliated with this node.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 affilited institutions. Each resource in the array is a separate institution object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/institutions/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_linked_nodes",
    "description": "List of all nodes linked to the given node.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 nodes. Each resource in the array is a separate node object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include nodes that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/nodes/?filter[title]=reproducibility.\n\nNodes may be filtered by their `title`, `category`, `description`, `public`, `registration`, or `tags`. `title`, `description`, and `category` are string fields and will be filteres using simple substring matching. `public`, `registration` are boolean and can be filtered using truthy values, such as `true`, `false`, `0`, `1`. `tags` is an array of simple strings.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/linked_nodes/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_logs",
    "description": "A paginated list of all logs associated with a given node.\n\nThe returned logs are sorted by their `date`, with the most recents logs appearing first.\n\nThis list includes the logs of the specified node as well as the logs of that node's children to which the current user has read-only access.\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 logs. Each resource in the array is a separate logs object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include logs that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/nodes/ezcuj/logs/?filter[action]=made_private.\n\nNodes may be filtered by their `action`, and `date`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/logs/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_preprints",
    "description": "A paginated list of preprints related to a given node. The returned preprints are sorted by their creation date, with the most recent preprints appearing first.\n\n**Note: This API endpoint is under active development, and is subject to change in the future.**\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 preprints. Each resource in the array is a separate preprint object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/preprints/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_registrations",
    "description": "List of all registrations of the given node.\n#### Returns\n\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 registrations. Each resource in the array is a separate registrations object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\n\nYou can optionally request that the response only include registrations that match your filters by utilizing the filter query parameter, e.g. https://api.osf.io/v2/registrations/?filter[title]=open.\n\nRegistrations may be filtered by their `id`, `title`, `category`, `description`, `public`, `tags`, `date_created`, `date_modified`, `root`, `parent`, and `contributors`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/registrations/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_view_only_links",
    "description": "List of view only links on a node.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 view only links. Each resource in the array is a view only link object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\n#### Permissions\n\nView only links on a node, public or private, are readable and writeable only by users that are administrators on the node.\n\n#### Filtering\n\nYou can optionally request that the response only include view only links that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/nodes/ezcuj/view_only_links/?filter[anonymous]=true.\n\nView Only Links may be filtered based on their `name`, `anonymous` and `date_created` fields. Possible comparison operators include 'gt' (greater than), 'gte'(greater than or equal to), 'lt' (less than) and 'lte' (less than or equal to). The date must be in the format YYYY-MM-DD and the time is optional.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/view_only_links/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_nodes_view_only_links_by_node_id_link_id",
    "description": "Retrieves the details of a view only link on a node.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested view only link, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n#### Permissions\n\nView only links on a node, public or private, are readable and writeable only by users that are administrators on the node.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "link_id": {
          "type": "string",
          "description": "The unique identifier of the view only link."
        }
      },
      "required": [
        "node_id",
        "link_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/view_only_links/{link_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_nodes_wikis",
    "description": "List of wiki pages on a node.\n#### Returns\nPaginated list of the node's current wiki page versions ordered by their date_modified. Each resource contains the full representation of the wiki, meaning additional requests to an individual wiki's detail view are not necessary.\n\nNote that if an anonymous view_only key is being used, the user relationship will not be exposed.\n\nIf the request is unsuccessful, a JSON object with an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n#### Filtering\nWiki pages can be filtered based on their `name` and `date_modified` fields.\n+ `filter[name]=<Str>` -- filter wiki pages by name\n+ `filter[date_modified][comparison_operator]=YYYY-MM-DDTH:M:S` -- filter wiki pages based on date modified.\n\nPossible comparison operators include 'gt' (greater than), 'gte'(greater than or equal to), 'lt' (less than) and 'lte' (less than or equal to). The date must be in the format YYYY-MM-DD and the time is optional.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/nodes/{node_id}/wikis/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprint_providers",
    "description": "A paginated list of all preprint providers. The returned preprint providers are sorted by their creation date, with the most recent preprints appearing first.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 preprint providers. Each resource in the array is a separate preprint provider object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.\n#### Filtering\nYou can optionally request that the response only include preprint providers that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/preprint_providers/?filter[id]=osf.\n\nPreprint Providers may be filtered by their `id`, `name`,  and `description`",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprint_providers/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprint_providers_by_preprint_provider_id",
    "description": "Retrieves the details of a preprint provider.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested preprint provider, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n\n#### Acceptable Subjects Structure\nEach preprint provider specifies acceptable subjects.\n`subjects_acceptable` is an array found in `attributes`.\nSubjects consist of general parent subjects (e.g., Engineering), more specific child subjects (e.g., Aerospace Engineering), and even more specific grandchild subjects (e.g., Aerodynamics and Fluid Mechanics). Subjects can only be nested 3 deep.\n\n\n    \"subjects_acceptable\": [\n        [\n            [\n                # Parent Subject:\n                # Architecture\n                \"584240d954be81056ceca9e5\",\n\n                # Child Subject:\n                # Architectural Engineering\n                \"584240da54be81056cecac87\"\n            ],\n            # Include all Architectural Engineering's children:\n            true\n        ],\n        [\n            [\n                # Parent Subject:\n                # Engineering\n                \"584240da54be81056cecaca9\",\n\n                # Child Subject:\n                # Aerospace Engineering\n                \"584240db54be81056cecacd6\",\n\n                # Grandchild Subject:\n                # Aerodynamics and Fluid Mechanics\n                \"584240da54be81056cecaa74\"\n            ],\n            # All nestings 3 deep must be false\n            false\n        ]\n    ]\n\nThe above structure would allow Architecture, Architectural Engineering, all of Architectural Engineering's children, Engineering, Aerospace Engineering, and Aerodynamics and Fluid Mechanics.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_provider_id": {
          "type": "string",
          "description": "The unique identifier of the preprint provider."
        }
      },
      "required": [
        "preprint_provider_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprint_providers/{preprint_provider_id}/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprint_providers_licenses",
    "description": "A paginated list of the licenses allowed by a preprint provider.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 preprint providers. Each resource in the array is a separate preprint provider object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_provider_id": {
          "type": "string",
          "description": "The unique identifier of the preprint provider."
        }
      },
      "required": [
        "preprint_provider_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprint_providers/{preprint_provider_id}/licenses/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprint_providers_preprints",
    "description": "A paginated list of preprints from the specified preprint provider. The returned preprints are sorted by their creation date, with the most recent preprints appearing first.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 preprints. Each resource in the array is a separate preprint object.\n\nThe `links` key contains a dictionary with keys that can be used for [pagination](#tag/Pagination).\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n\n#### Filtering\nYou can optionally request that the response only include preprints that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/preprint_providers/osf/preprints/?filter[is_published]=true.\n\nPreprints may be filtered by their `id`, `is_published`, `date_created`, `date_modified`, and `provider`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_provider_id": {
          "type": "string",
          "description": "The unique identifier of the preprint provider."
        }
      },
      "required": [
        "preprint_provider_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprint_providers/{preprint_provider_id}/preprints/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprint_providers_taxonomies",
    "description": "A paginated list of the taxonomies for a preprint provider. The returned preprint providers taxonomies are sorted by their creation date, with the most recent preprints appearing first.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 preprint providers. Each resource in the array is a separate preprint provider object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_provider_id": {
          "type": "string",
          "description": "The unique identifier of the preprint provider."
        }
      },
      "required": [
        "preprint_provider_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprint_providers/{preprint_provider_id}/taxonomies/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprints",
    "description": "A paginated list of preprints from all preprint providers. The returned preprints are sorted by their creation date, with the most recent preprints appearing first.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 preprints. Each resource in the array is a separate preprint object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.\n#### Filtering\nYou can optionally request that the response only include preprints that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/preprints/?filter[provider]=socarxiv.\n\nPreprints may be filtered by their `id`, `is_published`, `date_created`, `date_modified`, and `provider`.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprints/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprints_bibliographic_contributors",
    "description": "A paginated list of the Preprint's Bibliographic Contributors, sorted by their index.\nContributors are users who can make changes to the Preprint. Contributors with WRITE permissions may edit preprint details, and ADMIN Contributors may add or remove other Contributors.\n\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\". From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed on the project overview page on the OSF, while non-bibliographic contributors are not.\n\nNote that if an anonymous view_only key is being used to view the list of contributors, the user relationship will not be exposed and the contributor ID will be an empty string.\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 contributors. Each resource in the array contains the full representation of the contributor, meaning additional requests to a contributor's detail view are not necessary. Additionally, the full representation of the user this contributor represents is automatically embedded within the `data` key of the response.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include contributors that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/preprints/y9jdt/contributors/?filter[bibliographic]=true.\n\nContributors may be filtered by their `bibliographic` and `permission` attributes.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_id": {
          "type": "string",
          "description": "The unique identifier of the preprint."
        }
      },
      "required": [
        "preprint_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprints/{preprint_id}/bibliographic_contributors/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprints_by_preprint_id",
    "description": "Retrieves the details of a preprint.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested preprint, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_id": {
          "type": "string",
          "description": "The unique identifier of the preprint."
        }
      },
      "required": [
        "preprint_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprints/{preprint_id}/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprints_citation",
    "description": "The citation details for a preprint, in CSL format.\n#### Returns\nReturns a JSON object with a `data` key that contains the representation of the details necessary for the preprint citation.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_id": {
          "type": "string",
          "description": "The unique identifier of the preprint whose citation you wish to retrieve."
        }
      },
      "required": [
        "preprint_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprints/{preprint_id}/citation/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprints_citation_by_preprint_id_style_id",
    "description": "The citation for a preprint in a specific style.\n#### Returns\nReturns a JSON object with a `data` key that contains the representation of the preprint citation, in the requested style.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "style_id": {
          "type": "string",
          "description": "The unique identifier of the citation style."
        },
        "preprint_id": {
          "type": "string",
          "description": "The unique identifier of the preprint."
        }
      },
      "required": [
        "style_id",
        "preprint_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprints/{preprint_id}/citation/{style_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_preprints_contributors",
    "description": "A paginated list of the Preprint's Contributors, sorted by their index.\n\nContributors are users who can make changes to the Preprint. Contributors with WRITE permissions may edit preprint details, and ADMIN Contributors may add or remove other Contributors.\n\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\". From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed on the project overview page on the OSF, while non-bibliographic contributors are not.\n\nNote that if an anonymous view_only key is being used to view the list of Contributors, the user relationship will not be exposed and the Contributor ID will be an empty string.\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 contributors. Each resource in the array contains the full representation of the contributor, meaning additional requests to a contributor's detail view are not necessary. Additionally, the full representation of the user this contributor represents is automatically embedded within the `data` key of the response.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include contributors that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/preprints/y9jdt/contributors/?filter[bibliographic]=true.\n\nContributors may be filtered by their `bibliographic` and `permission` attributes.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_id": {
          "type": "string",
          "description": "The unique identifier of the preprint."
        }
      },
      "required": [
        "preprint_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprints/{preprint_id}/contributors/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_preprints_contributors_by_preprint_id_user_id",
    "description": "Retrieves the details of a contributor on this Preprint.\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\". From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed on the project overview page on the OSF, while non-bibliographic contributors are not.\n\nNote that if an anonymous view_only key is being used to view the list of contributors, the user relationship will not be exposed and the contributor ID will be an empty string.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested contributor, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_id": {
          "type": "string",
          "description": "The unique identifier of the Preprint."
        },
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        }
      },
      "required": [
        "preprint_id",
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/preprints/{preprint_id}/contributors/{user_id}/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations",
    "description": "A paginated list of registrations on the OSF to which the user has access.\n\nThe returned registrations are those which are public or which the user has access to view.\n\nNon-registered nodes cannot be accessed through this endpoint (use the [nodes](#Nodes_nodes_list) endpoints instead).\n\n#### Registrations\nA registration on the OSF creates a frozen, time-stamped version of a project that cannot be edited or deleted. The *original project* can still be edited, while the registered version cannot.\n\nRegistrations can be made public immediately or embargoed for up to 4 years.\n\n#### Withdrawals\nRegistrations cannot be deleted, but they can be withdrawn. Withdrawing a registration removes the content of the registration but leaves behind basic metadata. A withdrawn registration will display a limited subset of information, namely, title, description, date_created, date_registered, date_withdrawn, registration, withdrawn, withdrawal_justification, and registration supplement. All other fields will be displayed as null. Additionally, the only relationship that remains accesible for a withdrawn registration is the contributors. All other relationships will return a **403 Forbidden** response.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 registrations. Each resource in the array is a separate registration object and contains the full representation of the registration, meaning additional requests to a registration's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.\n#### Filtering\nYou can optionally request that the response only include registrations that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/registrations/?filter[title]=open.\n\nRegistrations may be filtered by their `id`, `title`, `category`, `description`, `public`, `tags`, `date_created`, `date_modified`, `root`, `parent`, and `contributors`.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_by_registration_id",
    "description": "Retrieve the details of a given registration.\n#### Permissions\nOnly project contributors may retrieve the details of a registration that is embargoed, or has not yet been made public. Attempting to retrieve a private registration for which you are not a contributor will result in a **403 Forbidden** response.\n\nAuthentication is not required to view the details of a public registration, as public registrations give read-only access to everyone.\n#### Registrations\nA registration on the OSF creates a frozen, time-stamped version of a project that cannot be edited or deleted. The *original project* can still be edited, while the registered version cannot.\n\nRegistrations can be made public immediately or embargoed for up to 4 years.\n\n#### Withdrawals\nRegistrations cannot be deleted, but they can be withdrawn. Withdrawing a registration removes the content of the registration but leaves behind basic metadata. A withdrawn registration will display a limited subset of information, namely, title, description, date_created, date_registered, date_withdrawn, registration, withdrawn, withdrawal_justification, and registration supplement. All other fields will be displayed as null. Additionally, the only relationship that remains accesible for a withdrawn registration is the contributors. All other relationships will return a **403 Forbidden** response.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested registration, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_children",
    "description": "A paginated list of children of a registration.\n\nThe list consists of the next level child registrations for the given registration. The returned registrations are sorted by their `date_modified`, with the most recently updated child registrations appearing first.\n\nThe list will include child registrations that are public, as well as child registrations that are private, if the authenticated user has permission to view them.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 child registrations. If the given registration has zero child registrations, the `data` key will contain an empty array. Each resource in the array is a separate registration object and contains the full representation of the child registration.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\n#### Filtering\nYou can optionally request that the response only include registrations that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/registrations/wucr8/children/?filter[title]=reproducibility.\n\nRegistrations may be filtered by their `id`, `title`, `category`, `description`, `public`, `tags`, `date_created`, `date_modified`, `root`, `parent`, and `contributors`.\n\nMost fields are string fields and will be filtered using simple substring matching. Public is a boolean field, and can be filtered using truthy values, such as **true**, **false**, **0** or **1**. Note that quoting true or false in the query will cause the match to fail.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/children/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_citations",
    "description": "A paginated list of the registration's alternative citation styles\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 citation styles. Each resource in the array is a separate citation styles object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include citation styles that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/registrations/wucr8/citations/?filter[title]=open.\n\nCitation styles may be filtered by their `id`, `title`, `short-title`, and `summary`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/citations/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_citations_by_registration_id_citation_id",
    "description": "Retrieves the citation style details for a registration, in CSL format.\n#### Returns\nReturns a JSON object with a `data` key that contains the representation of the details necessary for the citation style.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        },
        "citation_id": {
          "type": "string",
          "description": "The unique identifier of the citation."
        }
      },
      "required": [
        "registration_id",
        "citation_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/citations/{citation_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_registrations_comments",
    "description": "A paginated list of the registration's comments.\n\nThe returned comments are sorted by their creation date, with the most recent comments appearing first.\n#### Permissions\nComments of public registrations are given read-only access to everyone.\n\nIf the comment-level is `private`, only registration contributors have permission to comment.\n\nIf the comment-level is `public`, any logged-in OSF user can comment.\n\nComments of private registrations are only visible to contributors and administrators on the registration.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of comment objects. Each resource in the array is a separate comment object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include comments that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/registrations/wuerf/comments/?filter[target]=wuerf\n\nComments may be filtered by their `deleted`, `target`, `date_created`, `date_modified`.\n\nMost fields are string fields and will be filtered using simple substring matching. Deleted is a boolean field, and can be filtered using truthy values, such as **true**, **false**, **0** or **1**. Note that quoting `true` or `false` in the query will cause the match to fail.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/comments/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_contributors",
    "description": "A paginated list of all contributors on this registration.\nThe returned contributors are sorted by their index.\n\nContributors are users who can make changes to the registration or, in the case of private registration, have read access to the registration.\n\nContributors are categorized as either \"bibliographic\" or \"non-bibliographic\". From a permissions standpoint, both are the same, but bibliographic contributors are included in citations and are listed in the contributors list on the OSF, while non-bibliographic contributors are not.\n\nNote that if an anonymous view_only key is being used to view the list of contributors, the user relationship will not be exposed and the contributor ID will be an empty string.\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 contributors. Each resource in the array contains the full representation of the contributor. Additionally, the full representation of the user this contributor represents is automatically embedded within the `data` key of the response.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include contributors that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/registrations/wu3a4/contributors/?filter[bibliographic]=true.\n\nContributors may be filtered by their `bibliographic` and `permission` attributes.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/contributors/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_contributors_by_registration_id_user_id",
    "description": "Retrieves the details of a contributor on this registration.\n\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested contributor, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        },
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        }
      },
      "required": [
        "registration_id",
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/contributors/{user_id}/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_files",
    "description": "A paginated list of storage providers enabled on the registration\n\nUsers of the OSF may access their data on a [number of cloud-storage services](https://api.osf.io/v2/#storage-providers) that have integrations with the OSF. We call these **providers**. By default, every node has access to the OSF-provided storage but may use as many of the supported providers as desired.\n\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 files. Each resource in the array is a separate file object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nNote: In the OSF filesystem model, providers are treated as folders, but with special properties that distinguish them from regular folders. Every provider folder is considered a root folder, and may not be deleted through the regular file API.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/files/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_files_by_registration_id_provider",
    "description": "List of all the registration's files/folders for a given storage provider.\n\n#### Returns\n\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of files. Each resource in the array is a separate file object and contains the full representation of the file.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\n#### Filtering\n\nYou can optionally request that the response only include files that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/registrations/wucr8/files/osfstorage/?filter[kind]=file\n\nFiles may be filtered by `id`, `name`, `node`, `kind`, `path`, `provider`, `size`, and `last_touched`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the storage provider."
        }
      },
      "required": [
        "registration_id",
        "provider"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/files/{provider}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_registrations_files_by_registration_id_provider_path",
    "description": "Retrieves the details of a registration file for the given storage provider.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested registration file object, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the storage provider."
        },
        "path": {
          "type": "string",
          "description": "The unique identifier of the file path."
        }
      },
      "required": [
        "registration_id",
        "provider",
        "path"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/files/{provider}/{path}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_registrations_forks",
    "description": "A paginated list of the registration’s forks\n\nThe returned forks are sorted by their `forked_date`, with the most recent forks appearing first.\n\nForking a registration creates a copy of an existing registration and all of its contents.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 forks. If the current registration has no fork, the `data` key will contain an empty array. Each resource in the array is a separate registration object and contains the full representation of the registration's fork.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/forks/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_identifiers",
    "description": "A paginated list of the registration's identifiers.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of identifiers. Each resource in the array is a separate identifier object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\n\nYou can optionally request that the response only include registrations that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/registrations/wucr8/identifiers/?filter[category]=ark\n\nIdentifiers may be filtered by their `category` e.g `ark` or `doi`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/identifiers/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_institutions",
    "description": "A paginated list of institutions affiliated with the registration.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 affiliated institutions. Each resource in the array is a separate institution object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/institutions/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_linked_nodes",
    "description": "List of all nodes linked to the registration.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 nodes. Each resource in the array is a separate node object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include nodes that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/registrations/wucr8/linked_nodes/?filter[title]=reproducibility/?filter[title]=reproducibility.\n\nNodes may be filtered by their `title`, `category`, `description`, `public`, `registration`, or `tags`. `title`, `description`, and `category` are string fields and will be filteres using simple substring matching. `public`, `registration` are boolean and can be filtered using truthy values, such as `true`, `false`, `0`, `1`. `tags` is an array of simple strings.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/linked_nodes/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_logs",
    "description": "A paginated list of the registration's logs.\n\nThe returned logs are sorted by their `date`, with the most recents logs appearing first.\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 logs. Each resource in the array is a separate logs object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include logs that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/registrations/wucr8/logs/?filter[action]=made_private.\n\nLogs may be filtered by their `action`, and `date`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/logs/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_view_only_links",
    "description": "A paginated list of view only links created for this registration.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 view only links. Each resource in the array is a view only link object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\n#### Permissions\n\nView only links on a registration, public or private, are readable and writeable only by users that are administrators on the registration.\n\n#### Filtering\n\nYou can optionally request that the response only include view only links that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/registrations/wu3a4/view_only_links/?filter[anonymous]=true.\n\nView Only Links may be filtered based on their `name`, `anonymous` and `date_created` fields. Possible comparison operators include 'gt' (greater than), 'gte'(greater than or equal to), 'lt' (less than) and 'lte' (less than or equal to). The date must be in the format YYYY-MM-DD and the time is optional.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/view_only_links/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_registrations_view_only_links_by_registration_id_link_id",
    "description": "Retrieves the details of a view only link created from this registration.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested view only link, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n#### Permissions\n\nView only links on a registration, public or private, are readable and writeable only by users that are administrators on the registration.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        },
        "link_id": {
          "type": "string",
          "description": "The unique identifier of the view only link."
        }
      },
      "required": [
        "registration_id",
        "link_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/view_only_links/{link_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_registrations_wikis",
    "description": "A paginated list of the registration's wiki pages\n#### Returns\nA list of all registration's current wiki page versions ordered by their date_modified. Each resource contains the full representation of the wiki, meaning additional requests to an individual wiki's detail view are not necessary.\n\nIf the request is unsuccessful, a JSON object with an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n#### Filtering\nWiki pages can be filtered based on their `name` and `date_modified` fields.\n+ `filter[name]=<Str>` -- filter wiki pages by name\n+ `filter[date_modified][comparison_operator]=YYYY-MM-DDTH:M:S` -- filter wiki pages based on date modified.\n\nPossible comparison operators include 'gt' (greater than), 'gte'(greater than or equal to), 'lt' (less than) and 'lte' (less than or equal to). The date must be in the format YYYY-MM-DD and the time is optional.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        }
      },
      "required": [
        "registration_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/registrations/{registration_id}/wikis/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_schema_responses",
    "description": "This retrieves a paginated list of all active Schema Responses that are public.\n#### Returns\nReturns a JSON object containing `data` and `links` keys. The `data` key contains an array of 10 Schema Responses. Each resource in the array is a separate Registration Schemas object. The `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Errors\nThis request should never return an error.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/schema_responses/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_schema_responses_actions",
    "description": "This retrieves a paginated list of all Schema Response Actions created for a Schema Response.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested Schema Response Actions, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "schema_response_id": {
          "type": "string",
          "description": "The unique identifier of the Registration Schema example `6176c9d45e01f100091d4f94`."
        }
      },
      "required": [
        "schema_response_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/schema_responses/{schema_response_id}/actions/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_schema_responses_actions_by_schema_response_id_schema_response_action_id",
    "description": "Retrieves a Schema Response Action by it's ID.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested Schema Response Actions, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "schema_response_id": {
          "type": "string",
          "description": "The unique identifier of the Schema Response example `61b9cd62eb66180215222669`."
        },
        "schema_response_action_id": {
          "type": "string",
          "description": "The unique identifier of the Schema Response Action example `61b9eae1a7d8ac025c4c46d3`."
        }
      },
      "required": [
        "schema_response_id",
        "schema_response_action_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/schema_responses/{schema_response_id}/actions/{schema_response_action_id}",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_schema_responses_by_schema_response_id",
    "description": "This retrieves a single Schema response using it's id.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested Schema Response, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "schema_response_id": {
          "type": "string",
          "description": "The unique identifier of the Registration Schema example `6176c9d45e01f100091d4f94`."
        }
      },
      "required": [
        "schema_response_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/schema_responses/{schema_response_id}",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_schema_responses_schema_blocks",
    "description": "This returns a list of all the Registration Schema Blocks are contained in Registration Schema.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested Registration Schemas, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "schema_response_id": {
          "type": "string",
          "description": "The unique identifier of the Registration Schema example `6176c9d45e01f100091d4f94`."
        }
      },
      "required": [
        "schema_response_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/schema_responses/{schema_response_id}/schema_blocks/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_schema_responses_schema_blocks_by_schema_response_id_schema_response_block_id",
    "description": "This returns a Registration Schema Block by it's ID.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested Registration Schemas, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "schema_response_id": {
          "type": "string",
          "description": "The unique identifier of the Registration Schema example `6176c9d45e01f100091d4f94`."
        },
        "schema_response_block_id": {
          "type": "string",
          "description": "The unique identifier of the Schema Response Block example `61b79f9eadbb5701424a2d5e`."
        }
      },
      "required": [
        "schema_response_id",
        "schema_response_block_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/schema_responses/{schema_response_id}/schema_blocks/{schema_response_block_id}",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_schemas_registrations",
    "description": "Retrieve a paginated list of all active Registration Schemas. Registration Schemas describe the supplemental questions that accompany a registration. Registration Schemas are read-only for API users.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\nThe `data` key contains an array of 10 Registration Schemas. Each resource in the array is a separate Registration Schemas object.\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Errors\nThis request should never return an error.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/schemas/registrations/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_schemas_registrations_by_registration_schema_id",
    "description": "Retrieves the details of a given Registration Schema. Registration Schemas defines the desired supplemental information that should accompany be included in a Registration. Registration Schemas are Read-only to API users.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested Registration Schemas, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_schema_id": {
          "type": "string",
          "description": "The unique identifier of the Registration Schema example `6176c9d45e01f100091d4f94`."
        }
      },
      "required": [
        "registration_schema_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/schemas/registrations/{registration_schema_id}",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_taxonomies",
    "description": "A paginated list of all [bepress disciplines taxonomies](https://www.bepress.com/wp-content/uploads/2016/12/Digital-Commons-Disciplines-taxonomy-2017-01.pdf).\nNote: this API endpoint is under active development, and is subject to change in the future.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 taxonomies. Each resource in the array is a separate taxonomy object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.\n#### Filtering\nYou can optionally request that the response only include taxonomies that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/taxonomies/?filter['id']='{taxonomy_id}'.\n\nTaxonomies may be filtered by their `id`, `parents`, and `text`.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/taxonomies/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_taxonomies_by_taxonomy_id",
    "description": "Retrieves the details of a taxonomy.\n#### Returns\n\nReturns a JSON object with a `data` key containing the representation of the requested taxonomy, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "taxonomy_id": {
          "type": "string",
          "description": "The unique identifier of the taxonomy."
        }
      },
      "required": [
        "taxonomy_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/taxonomies/{taxonomy_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_users",
    "description": "A paginated list of all users registered on the OSF. The returned users are sorted by their `date_registered`, with the most recently registered users appearing first.\n\nThe subroute `/users/me/` is a special endpoint that always points to the currently logged-in user.\n#### Versioning\nAs of version `2.3`, merged users will not be returned from this endpoint.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 users. Each resource in the array is a separate users object and contains the full representation of the user, meaning additional requests to a user's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nThis request should never return an error.\n#### Filtering\nYou can optionally request that the response only include nodes that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/users/?filter[family_name]=Nosek.\n\nUsers may be filtered by their `id`, `full_name`, `given_name`, `middle_name`, or `family_name`.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/users/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_users_addons",
    "description": "A paginated list of authorized user addons\n\n#### Permissions\n\nUser addons are visible only to the user that authorized the addon.\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of up to 10 addons. Each resource in the array is a separate addon object.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n\nAttempting to request the accounts for an addon that is not enabled will result in a **404 Not Found** response.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        }
      },
      "required": [
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/users/{user_id}/addons/",
      "effect": "reads",
      "verification": "broken",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_users_addons_accounts",
    "description": "A paginated list of addon accounts authorized by this user.\n\n#### Permissions\n\nAddon accounts are visible only to the user that authorized the account.\n\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of at most 10 addon account objects. Each resource in the array is a separate  addon account object and contains the full representation of the addon account.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the addon provider."
        }
      },
      "required": [
        "user_id",
        "provider"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/users/{user_id}/addons/{provider}/accounts/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_users_addons_accounts_by_user_id_provider_account_id",
    "description": "Retrieves the details of an addon account\n\n#### Permissions\n\nAddon accounts are visible only to the user that authorized the account.\n\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested addon account, if the request was successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the addon provider."
        },
        "account_id": {
          "type": "string",
          "description": "The unique identifier of the addon account."
        }
      },
      "required": [
        "user_id",
        "provider",
        "account_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/users/{user_id}/addons/{provider}/accounts/{account_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_users_addons_by_user_id_provider",
    "description": "Retrieves the details of an authorized user addon\n\n#### Permissions\n\nUser addons are visible only to the user that authorized the addon.\n\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested user addon, if the request was successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n\nAttempting to request the accounts for an addon that is not enabled will result in a **404 Not Found** response.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the addon provider."
        }
      },
      "required": [
        "user_id",
        "provider"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/users/{user_id}/addons/{provider}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_users_by_user_id",
    "description": "Retrieves the details of a given users.\n\nThe returned information includes the user's bibliographic information and the date the user was registered.\n\nAdditionally, relationships to the list of institutions with which the user is affiliated, and to the list of nodes which the user contributes to (that the requesting user has permission to see) are returned.\n\nIf `me` is given as the `user_id` in the request path, the record of the currently logged-in user will be returned.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested user, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        }
      },
      "required": [
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/users/{user_id}/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_users_institutions",
    "description": "A paginated list of institutions that the user is affiliated with.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 institutions. Each resource in the array is a complete institution object and contains the full representation of the institution, meaning additional requests to a institution's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).",
    "inputSchema": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        }
      },
      "required": [
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/users/{user_id}/institutions/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_users_nodes",
    "description": "A paginated list of nodes that the user is a contributor to. The returned nodes are sorted by their `date_modified`, with the most recently updated nodes appearing first.\n\nIf the user ID in the path is the same as the logged-in user, all nodes will be returned. Otherwise, only the user's public nodes will be returned.\n\nUser registrations are not available at this endpoint.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 nodes. Each resource in the array is a separate node object and contains the full representation of the node, meaning additional requests to a node's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include nodes that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/users/cdi38/nodes/?filter[title]=open.\n\nNodes may be filtered by their `id`, `title`, `category`, `description`, `public`, `tags`, `date_created`, `date_modified`, `root`, `parent`, `preprint`, and `contributors`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        }
      },
      "required": [
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/users/{user_id}/nodes/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_users_preprints",
    "description": "A paginated list of preprints that the user contributes to. The returned preprints are sorted by their creation date, with the most recent preprints appearing first.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 preprints. Each resource in the array is a complete preprint object and contains the full representation of the preprint, meaning additional requests to a preprint's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include preprints that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/users/cdi38/preprints/?filter[provider]=psyarxiv.\n\nPreprints may be filtered by their `id`, `is_published`, `date_created`, `date_modified`, and `provider`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        }
      },
      "required": [
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/users/{user_id}/preprints/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_users_registrations",
    "description": "A paginated list of registrations that the user is a contributor to. The returned registrations are sorted by their `date_modified`, with the most recently updated registrations appearing first.\n\nIf the user ID in the path is the same as the logged-in user, all registrations will be returned. Otherwise, only the user's public registrations will be returned.\n\nUser nodes are not available at this endpoint.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\n\nThe `data` key contains an array of 10 registrations. Each resource in the array is a separate registration object and contains the full representation of the registration, meaning additional requests to a registration's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n#### Filtering\nYou can optionally request that the response only include registrations that match your filters by utilizing the `filter` query parameter, e.g. https://api.osf.io/v2/users/cdi38/registrations/?filter[title]=replication.\n\nRegistrations may be filtered by their `id`, `title`, `category`, `description`, `public`, `tags`, `date_created`, `date_modified`, `root`, `parent`, and `contributors`.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        }
      },
      "required": [
        "user_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/users/{user_id}/registrations/",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_view_only_links",
    "description": "Retrieves details about a specific view only link.\n#### Permissions\nOnly project administrators may retrieve the details of a view only link. Attempting to retrieve a view only link without appropriate permissions will result in a 403 Forbidden response.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested view only link, if the request is successful.\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "link_id": {
          "type": "string",
          "description": "The unique identifier of the view only link."
        }
      },
      "required": [
        "link_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/view_only_links/{link_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_view_only_links_nodes",
    "description": "The list of nodes which this view only link gives read-only access to.\n#### Permissions\nOnly project administrators may retrieve the nodes of a view only link. Attempting to retrieve a view only link without appropriate permissions will result in a 403 Forbidden response.\n#### Returns\nReturns a JSON object containing `data` and `links` keys.\nThe `data` key contains an array of up to 10 nodes. Each resource in the array is a separate node object and contains the full representation of the node, meaning additional requests to a node's detail view are not necessary.\n\nThe `links` key contains a dictionary of links that can be used for [pagination](#tag/Pagination).\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "link_id": {
          "type": "string",
          "description": "The unique identifier of the view only link."
        }
      },
      "required": [
        "link_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/view_only_links/{link_id}/nodes/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_wikis",
    "description": "Retrieves the details about a specific wiki.\nA wiki is a collection of markdown text pages that can be used to describe the project or dataset of contained in the attached node.\n#### Returns\nReturns a JSON object with a `data` key containing the representation of the requested wiki, if the request was successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "wiki_id": {
          "type": "string",
          "description": "The unique identifier of the wiki."
        }
      },
      "required": [
        "wiki_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/wikis/{wiki_id}/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_wikis_content",
    "description": "Retrieves the plaintext content of a wiki in markdown format.\n#### Returns\nReturns `text/markdown` of the wiki content itself.\nIf the request is unsuccessful, plaintext with the error message will be displayed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "wiki_id": {
          "type": "string",
          "description": "The unique identifier of the wiki."
        }
      },
      "required": [
        "wiki_id"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/wikis/{wiki_id}/content/",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "replace_comments",
    "description": "Updates the specified comment by setting the values of the parameters passed. Any parameters not provided will be left unchanged.\n#### Returns\nReturns JSON with a `data` key containing the new representation of the updated comment, if the request is successful.\n\nIf the request is unsuccessful, JSON with an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "comment_id": {
          "type": "string",
          "description": "The unique identifier of the comment you wish to update."
        }
      },
      "required": [
        "comment_id"
      ]
    },
    "x-dyph": {
      "method": "PUT",
      "path": "/comments/{comment_id}/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "update_draft_registrations",
    "description": "Updates a Draft Registration by setting the values of the attributes specified in the request body. Any unspecified attributes will be left unchanged. Note this will not register or change the machine state of a Draft Registration, it can only edit the Draft Registration's attributes prior to its registration.\n#### Permissions\nOnly draft registration contributors may view draft registrations and only draft registration contributors with WRITE or ADMIN permissions may update draft registrations.\n#### Returns\nReturns a JSON object with a `data` key containing the new representation of the updated draft registration, if the request is successful.\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the draft registration."
        }
      },
      "required": [
        "draft_id"
      ]
    },
    "x-dyph": {
      "method": "PATCH",
      "path": "/draft_registrations/{draft_id}/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "update_files",
    "description": "Updates the specified file by setting the values of the parameters passed. Any parameters not provided will be left unchanged.\n#### Returns\nReturns JSON with a `data` key containing the new representation of the updated file, if the request is successful.\n\nIf the request is unsuccessful, JSON with an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "file_id": {
          "type": "string",
          "description": "The unique identifier of the file you wish to update."
        }
      },
      "required": [
        "file_id"
      ]
    },
    "x-dyph": {
      "method": "PATCH",
      "path": "/files/{file_id}/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "update_nodes",
    "description": "Updates a node by setting the values of the attributes specified in the request body. Any unspecified attributes will be left unchanged.\n\nNodes can be updated with either a **PUT** or **PATCH** request. The `title` and `category` fields are mandatory in a **PUT** request, and optional in a **PATCH**.\n#### Permissions\nOnly write contributors may update a node. Attempting to update a node for which you do not have write access will result in a **403 Forbidden** response.\n#### Returns\nReturns a JSON object with a `data` key containing the new representation of the updated node, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        }
      },
      "required": [
        "node_id"
      ]
    },
    "x-dyph": {
      "method": "PATCH",
      "path": "/nodes/{node_id}/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "update_nodes_addons",
    "description": "Updates a node addon by setting the values of the attributes specified in the request body. Any unspecified attributes will be left unchanged.\n\nNode addon can be updated with either a **PUT** or **PATCH** request. The `external_account_id`, `enabled`, and `folder_id` fields are mandatory in a **PUT**, and optional in **PATCH**. Non-string values will be accepted and stringified, however we make no promises about the stringification output.\n\nTo delete or deauthorize a node addon, issue a **PUT** with all fields set to `null` or `False`, or a **PATCH** with enabled set `False`.\n#### Permissions\nNodeSettings that are attached to public nodes will give read-only access to everyone. Private nodes require explicit read permission. Write and admin access are the same for public and private nodes. Administrators on a parent node have implicit read permissions for all child nodes.\nAny users with write or admin access to the node are able to deauthorize an enabled addon, but only the addon authorizer is able to change the configuration (i.e. selected folder) of an already-configured NodeSettings entity.\n\n#### Returns\nReturns a JSON object with a `data` key containing the new representation of the updated node addon, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "provider": {
          "type": "string",
          "description": "The unique identifier of the addon."
        }
      },
      "required": [
        "node_id",
        "provider"
      ]
    },
    "x-dyph": {
      "method": "PATCH",
      "path": "/nodes/{node_id}/addons/{provider}/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "update_nodes_contributors",
    "description": "Updates a contributor by setting the values of the attributes specified in the request body. Any unspecified attributes will be left unchanged.\n\nContributors can be updated with either a **PUT** or **PATCH** request. Since this endpoint has no mandatory attributes, PUT and PATCH are functionally the same.\n#### Permissions\nOnly project administrators can update the contributors on a node.\n#### Returns\nReturns a JSON object with a `data` key containing the new representation of the updated contributor, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.\n\nIf the given user is not already in the contributor list, a 404 Not Found error will be returned. A node must always have at least one admin, and any attempt to downgrade the permissions of a sole admin will result in a 400 Bad Request error.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the contributor entity."
        },
        "id": {
          "type": "string",
          "description": "The identifier of the contributor entity. Contributor identifiers have the form {node_id}-{user_id}."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the contributor entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the contributor entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the contributor entity (`contributors`)."
        }
      },
      "required": [
        "node_id",
        "user_id",
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "PATCH",
      "path": "/nodes/{node_id}/contributors/{user_id}/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "update_nodes_draft_registrations",
    "description": "Updates a draft registration by setting the values of the attributes specified in the request body. Any unspecified attributes will be left unchanged.\n\nDraft Registrations contain Registration questions that will become part of the Registration. Answer the questions in the draft registration supplement by sending update requests until you are ready to submit the draft.\n\nThe registration supplement of a draft registration cannot be updated after the draft has been created.\n\nWhen updating a draft registration, `registration_metadata` is required. It must be a dictionary with keys as question ids in the registration form, and values as nested dictionaries matching the specific format in the [registration schema](TODO: link me pls).\n\nIf a question is multiple-choice, the question response must exactly match one of the possible choices.\n#### Permissions\nOnly project administrators may update draft registrations.\n#### Returns\nReturns a JSON object with a `data` key containing the new representation of the updated draft registration, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "node_id": {
          "type": "string",
          "description": "The unique identifier of the node."
        },
        "draft_id": {
          "type": "string",
          "description": "The unique identifier of the draft registration."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the Draft Registration entity."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the draft registration entity."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the draft registration entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the draft registration entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the draft registration entity (`draft_registrations`)."
        }
      },
      "required": [
        "node_id",
        "draft_id",
        "attributes",
        "id",
        "links",
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "PATCH",
      "path": "/nodes/{node_id}/draft_registrations/{draft_id}/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "update_preprints",
    "description": "Updates the specified preprint by setting the values of the parameters passed. Any parameters not provided will be left unchanged.\n#### Returns\nReturns a JSON object with a `data` key containing the new representation of the updated preprint, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes]() to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "preprint_id": {
          "type": "string",
          "description": "The unique identifier of the preprint."
        }
      },
      "required": [
        "preprint_id"
      ]
    },
    "x-dyph": {
      "method": "PATCH",
      "path": "/preprints/{preprint_id}/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "update_registrations",
    "description": "Updates a registration's privacy from **private** to **public**.\n\nRegistrations can be updated with either a **PUT** or **PATCH** request. The `public` field is the only field that can be modified on a registration\n\nRegistrations can only be turned from private to public, not vice versa.\n#### Permissions\nOnly project administrators may update a registration.\n#### Returns\nReturns a JSON object with a `data` key containing the new representation of the updated registration, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "registration_id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the registration entity."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the registration."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the registrations entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the registration entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the registration entity (`registrations`)."
        }
      },
      "required": [
        "registration_id",
        "attributes",
        "id",
        "links",
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "PATCH",
      "path": "/registrations/{registration_id}/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "update_schema_responses",
    "description": "Patching to this endpoint allows one to directly edit the revision responses on the Schema Response of a Registration if that Schema Response is in an `in_progress` state.\n#### Returns\nReturns a JSON object with a `data` key containing an updated representation of the requested Schema Response, if the request is successful.\n#### Errors\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "schema_response_id": {
          "type": "string",
          "description": "The unique identifier of the Registration Schema example `6176c9d45e01f100091d4f94`."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the Schema Response."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the Schema Response."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the Schema Response entity."
        },
        "relationships": {
          "type": "object",
          "description": "Links to other entities or entity collections that have a relationship to the file entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the Schema Response (`schema-response`)."
        }
      },
      "required": [
        "schema_response_id",
        "attributes",
        "type"
      ]
    },
    "x-dyph": {
      "method": "PATCH",
      "path": "/schema_responses/{schema_response_id}",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "update_users",
    "description": "Updates a user by setting the values of the attributes specified in the request body. Any unspecified attributes will be left unchanged.\n\nUsers can be updated with either a **PUT** or **PATCH** request. The `full_name` field is mandatory in a **PUT** request, and optional in a **PATCH**.\n\n**Note**: if you make a PUT/PATCH request to the `/users/me/` endpoint, you must still provide your full user ID in the ID field of the request. We do not support using the `me` alias in request bodies at this time.\n#### Returns\nReturns a JSON object with a `data` key containing the new representation of the updated node, if the request is successful.\n\nIf the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "user_id": {
          "type": "string",
          "description": "The unique identifier of the user."
        },
        "attributes": {
          "type": "object",
          "description": "The properties of the user entity."
        },
        "id": {
          "type": "string",
          "description": "The unique identifier of the user entity."
        },
        "links": {
          "type": "object",
          "description": "URLs to alternative representations of the user entity."
        },
        "relationships": {
          "type": "object",
          "description": "URLs to other entities or entity collections that have a relationship to the user entity."
        },
        "type": {
          "type": "string",
          "description": "The type identifier of the user entity (`users`)."
        }
      },
      "required": [
        "user_id",
        "attributes",
        "id",
        "links",
        "relationships",
        "type"
      ]
    },
    "x-dyph": {
      "method": "PATCH",
      "path": "/users/{user_id}/",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  }
]
