openapi: 3.0.0 info: title: NextGen Catalog Accounts Users API version: 0.2.0 description: "\nThis is the NextGen Catalog API application made with Express and documented with Swagger.\n\nThis API requires the use of an API key in order to access. Once you have obtained an API key, you can pass the API key into a REST API call in the x-api-key header of the request. For example, the request might look like\n\n curl --location --request GET 'https://catalog.archives.gov/api/v2/records/search?q=constitution'\n --header 'Content-Type: application/json'\n --header 'x-api-key: API_KEY'\n\nwhere API_KEY is the key string of your API key.\n\nFor write operations, in addition to the API key, a user ID in the format of a Universally Unique Identifier (UUID) is required in the body of the request. For example, a request to POST a tag might look like:\n\n curl --location --request POST 'https://catalog.archives.gov/api/v2/tags'\n --header 'Content-Type: application/json'\n --data-raw '{\n \"tag\": \"example tag\",\n \"targetNaId\": 1667751,\n \"userId\": \"USER_UUID\"\n }'\nwhere USER_UUID is the UUID of the user.\n\nPlease contact O&M at Catalog_API@nara.gov for an API Key." servers: - url: https://catalog.archives.gov/api/v2/ tags: - name: Users paths: /users: patch: summary: Update user information given a user's email. description: Update user information given a user. Requires an administrative account and a justification. Returns a JSON result. tags: - Users requestBody: description: Update information about a user. required: true content: application/json: schema: $ref: '#/components/schemas/userUpdateBody' responses: '200': description: Successfully updated user '400': description: Bad Request '422': description: Unprocessable Entity - params are invalid /users/username: patch: summary: Update a users username given their userId. description: Update user information given a user's userId. Returns a JSON result. tags: - Users requestBody: description: Update information about a user. required: true content: application/json: schema: $ref: '#/components/schemas/usernameUpdateBody' responses: '200': description: Successfully updated user '400': description: Bad Request '422': description: Unprocessable Entity - params are invalid /users/notifications/:userId: get: summary: Recieve the users notifications. description: Recieve the users notifications, including edited transcriptions, moderated contributions, and replies to comments. Notifications are contributions, with an additional field 'notificationType' to denote type. tags: - Users parameters: - in: path name: userId schema: type: string required: true description: userId of the user recieving notifications. example: 55555555-5555-5555-5555-555555555555 - in: query name: countOnly schema: type: boolean required: false description: Recieve only the count of notifications, and none of the contributions. example: true - in: query name: date schema: type: string required: false description: Recieve only the notifications past a certain date. Date must be in YYYY-MM-DD format. example: '2022-02-22' - in: query name: limit schema: type: int required: false description: Limit the amount of returned notifications. example: 5 - in: query name: page schema: type: int required: false description: Page number for pagination of notifications. Page size is denoted by limit, defaults to 5. For example, if page = 3 notifications 10-14 will be returned. example: 2 responses: '200': description: Successfully retrieved notifications '422': description: Unprocessable Entity - params are invalid components: schemas: userUpdateBody: type: object properties: actionNotes: type: string example: Changed user role to moderator maximum: 500 adminUserId: type: string example: 12345678-abcd-efgh-1234-abcdefghigjk maximum: 36 minimum: 36 email: type: string example: johndoe@nara.gov maximum: 250 justificationId: type: number example: 16 maximum: 20 minimum: 1 role: type: string example: contributor maximum: 32 minimum: 2 status: type: string example: inactive maximum: 32 minimum: 2 userName: type: string example: jdoe1 maximum: 32 minimum: 2 required: - adminUserId - email - justificationId usernameUpdateBody: type: object properties: userId: type: string example: 1234 maximum: 100 userName: type: string example: jdoe1 maximum: 32 minimum: 2 required: - userId