National Archives and Records Administration (NARA) Announcements API

For important announcements

OpenAPI Specification

national-archives-and-records-administration-nara--announcements-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: NextGen Catalog Accounts Announcements 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: Announcements
  description: For important announcements
paths:
  /announcements/latest:
    get:
      summary: Get a list of active announcements.
      description: Retrieve a paginated list of announcements.
      tags:
      - Announcements
      responses:
        '200':
          description: A list of announcements.
          content:
            application/json:
              schema:
                type: object
                properties:
                  announcements:
                    type: array
                    items:
                      $ref: '#/components/schemas/Announcement'
  /announcements:
    get:
      summary: Get a list of announcements.
      description: Retrieve a paginated list of announcements.
      tags:
      - Announcements
      parameters:
      - in: query
        name: page
        schema:
          type: integer
          default: 1
        description: The page number of announcements to retrieve.
      - in: query
        name: limit
        schema:
          type: integer
          default: 10
        description: The number of announcements to display per page.
      - in: query
        name: status
        schema:
          type: string
          enum:
          - ACTIVE
          - DRAFT
          - INACTIVE
        description: The status of the announcements to filter by.
      - in: query
        name: sortCol
        schema:
          type: string
          enum:
          - status
          - created_at
          - updated_at
          - user_name
        description: The column to sort the announcements by.
      - in: query
        name: sortOrder
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
        description: The order of sorting (ascending or descending).
      responses:
        '200':
          description: A list of announcements.
          content:
            application/json:
              schema:
                type: object
                properties:
                  metadata:
                    type: object
                    properties:
                      totalCount:
                        type: integer
                        description: The total number of announcements.
                      activeCount:
                        type: integer
                        description: The number of active announcements.
                      draftCount:
                        type: integer
                        description: The number of draft announcements.
                      inactiveCount:
                        type: integer
                        description: The number of inactive announcements.
                  announcements:
                    type: array
                    items:
                      $ref: '#/components/schemas/Announcement'
    post:
      summary: Create a new announcement.
      description: Allows a moderator to create a new announcement. The announcement is initially created with a status of 'DRAFT'.
      tags:
      - Announcements
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - announcement_text
              properties:
                announcement_text:
                  type: string
                  description: The content of the announcement.
                notes:
                  type: string
                  description: Optional notes about the announcement.
                user_id:
                  type: integer
                  description: The ID of the user who is creating the announcement.
      responses:
        '201':
          description: Announcement created successfully. The response includes the created announcement details.
          content:
            application/json:
              schema:
                type: object
                properties:
                  announcement_id:
                    type: integer
                    description: The unique identifier of the announcement.
                  created_at:
                    type: string
                    format: date-time
                    description: The timestamp when the announcement was created.
                  announcement_text:
                    type: string
                    description: The content of the announcement.
                  notes:
                    type: string
                    description: Optional notes about the announcement.
                  user_id:
                    type: string
                    description: The ID of the user who created the announcement.
                  status:
                    type: string
                    description: The status of the announcement.
        '400':
          description: Validation error. This can occur if the request body does not match the expected format.
        '500':
          description: Internal server error.
      security:
      - ApiKeyAuth: []
  /announcements/{announcement_id}:
    put:
      summary: Update an existing announcement.
      description: Allows a moderator to update an existing announcement.
      tags:
      - Announcements
      parameters:
      - in: path
        name: announcement_id
        required: true
        schema:
          type: integer
        description: The unique identifier of the announcement to update.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                announcement_text:
                  type: string
                  description: Updated content of the announcement.
                status:
                  type: string
                  enum:
                  - DRAFT
                  - ACTIVE
                  - INACTIVE
                  description: Updated status of the announcement.
                user_id:
                  type: string
                  format: uuid
                  description: The ID of the user who is updating the announcement.
                notes:
                  type: string
                  description: Optional notes about the announcement.
      responses:
        '200':
          description: Announcement updated successfully. Returns the updated announcement object.
          content:
            application/json:
              schema:
                type: object
                properties:
                  announcement_id:
                    type: integer
                    description: The unique identifier of the announcement.
                  announcement_text:
                    type: string
                    description: Content of the announcement.
                  status:
                    type: string
                    description: Current status of the announcement.
                  user_id:
                    type: string
                    format: uuid
                    description: The ID of the user who updated the announcement.
                  user_name:
                    type: string
                    description: The name of the user who updated the announcement.
                  notes:
                    type: string
                    description: Optional notes about the announcement.
                  created_at:
                    type: string
                    format: date-time
                    description: Timestamp when the announcement was created.
                  updated_at:
                    type: string
                    format: date-time
                    description: Timestamp when the announcement was last updated.
        '400':
          description: Validation error.
        '404':
          description: Announcement not found.
        '500':
          description: Internal server error.
      security:
      - ApiKeyAuth: []