{
  "openapi": "3.0.4",
  "info": {
    "title": "Article Galaxy API",
    "description": "API for document delivery and citation services.\n\n# Introduction\n\nWelcome to the Article Galaxy API. This API provides access to document delivery, citation services, and publication management.\n\n# Authentication\n\nAll API requests require authentication using API keys in the Authorization header:\n\n```\nAuthorization: AG-API-KEYS AccessKey:SecretKey\n```\n\nContact our support team to obtain your API credentials.\n\n# Rate Limiting\n\nAPI requests are subject to rate limiting. Please refer to response headers for current limits.\n\n# Terms of Use\n\n## Acceptable Use\n\nBy using the Article Galaxy API, you agree to:\n\n- Use the API only for legitimate business purposes\n- Not attempt to bypass authentication or security measures\n- Not abuse, overload, or harm the API infrastructure\n- Comply with all applicable laws and regulations\n\n## Data Privacy\n\n- Your API usage data is logged for security and analytics purposes\n- We do not share your data with third parties except as required by law\n- All document requests are encrypted and securely transmitted\n\n## Intellectual Property\n\n- Content accessed through this API is subject to copyright and licensing restrictions\n- Users are responsible for ensuring proper licensing and attribution\n- Article Galaxy does not grant ownership rights to accessed content\n\n## Liability\n\n- The API is provided \"as is\" without warranties of any kind\n- Article Galaxy is not liable for service interruptions or data loss\n- Users are responsible for implementing appropriate error handling\n\n## Changes to Terms\n\nWe reserve the right to modify these terms at any time. Continued use of the API constitutes acceptance of updated terms.\n\nFor questions about these terms, contact customersupport@researchsolutions.com\n\n# Support\n\nFor technical support or inquiries, please contact us at customersupport@researchsolutions.com\n",
    "contact": {
      "name": "API Support",
      "email": "customersupport@researchsolutions.com"
    },
    "version": "v1"
  },
  "paths": {
    "/account/intendeduse": {
      "get": {
        "tags": [
          "Account Settings"
        ],
        "summary": "Get Intended Use",
        "description": "Retrieve a list of intended uses for the account.",
        "responses": {
          "200": {
            "description": "List of intended uses retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AccountIntendedUse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/publications/availability": {
      "post": {
        "tags": [
          "Publications"
        ],
        "summary": "Check Availability",
        "description": "\n### Check availability of articles based on citation information.\nThe response can return clearing information, for each citation.\n```\nExample paylod with array of different citation information, you can send as many citations as needed, but we will crop to the first 25 to avoid performance issues and timeouts:\n\n[\n\t{\n\t\t\"doi\": \"10.1093/ndt/gft439\"\n\t},\n\t{\n\t\t\"pubmedId\": \"44441111\"\n\t},\n\t{\n\t\t\"standardNumber\": \"09310509\",\n\t\t\"publicationYear\": 2021\n\t}\n]\n\nExample with intended use:\n\n[\n    {\n        \"doi\": \"10.1093/ndt/gft439\",\n        \"intendedUseId\": 2\n    },\n    {\n        \"standardNumber\": \"09310509\",\n        \"standardNumber2\": \"14602385\",\n        \"publicationYear\": 2021,\n        \"intendedUseId\": 2\n    }\n]\n\n```\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CheckAvailabilityRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Quote created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CheckAvailabilityPublicPayload"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/publications/order": {
      "post": {
        "tags": [
          "Publications"
        ],
        "summary": "Create Order",
        "description": "\n### Create an order for an publication based on citation information.\nExample with the minimum information needed for an order when you have a DOI:\n```\n{\n  \"userInfo\": {\n    \"userName\": \"demo.trial@articlegalaxy.com\",\n    \"email\": \"demo.trial@articlegalaxy.com\",\n    \"firstName\": \"Demo\",\n    \"lastName\": \"Trial\"\n  },\n  \"deliverToEmail\": \"demo.trial@articlegalaxy.com\",\n  \"citation\": {\n    \"doi\": \"10.1007/s00454-016-9824-0\"\n  },\n  \"intendedUseId\": 2,\n  \"orderType\": \"RequestPDF\",\n  \"customerReferences\": {}\n}\n```\n    ",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ArticleGalaxyOrder"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Order created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderCreatedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/publications/reuserights": {
      "post": {
        "tags": [
          "Publications"
        ],
        "summary": "Get Reuse Rights",
        "description": "\n### Return the re-use rights information based on the standard number, publication year, and country.\nExample payload:\n```\n{\n    \"doi\": \"10.1093/ndt/gft439\"\n}\n\nor \n\n{\n    \"standardNumber\": \"09310509\",\n    \"publicationYear\": 2021\n}\n```\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReuseRightsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Reuse rights retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReuseRightsResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/publications/order/{orderId}": {
      "get": {
        "tags": [
          "Publications"
        ],
        "summary": "Get Order Details",
        "description": "Retrieve details and download URLs for a specific order by its ID.",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Order details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderInfo"
                }
              }
            }
          },
          "403": {
            "description": "Unauthorized access to order"
          },
          "404": {
            "description": "Order not found"
          },
          "410": {
            "description": "Order has been cancelled"
          }
        }
      }
    },
    "/publications/order/{orderId}/urls": {
      "get": {
        "tags": [
          "Publications"
        ],
        "summary": "Get Order URLs",
        "description": "Retrieve download URLs for a specific order by its ID.",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Order URLs retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderDownloadUrls"
                }
              }
            }
          }
        }
      }
    },
    "/references/personalfolder": {
      "post": {
        "tags": [
          "References"
        ],
        "summary": "Create a Personal Folder",
        "description": "Creates one or more personal (user-owned) reference folders. Each folder is owned by the specified UserId (access level 30 — Full). The owner is recorded automatically; it cannot be set via POST /references/folder/users.\n\nSupports bulk creation: send an array with one or more items. A failure on one item does not affect others.\n\nAll responses use HTTP 200. Check each item's `success` field to determine the outcome. When `success` is false, the `error` field contains a description and `folderId` is null.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CreateUserFolderRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Folders created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FolderCreatedResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/references/accountfolder": {
      "post": {
        "tags": [
          "References"
        ],
        "summary": "Create Account Folders",
        "description": "Creates one or more account-level reference folders. All users in the account receive the specified access level automatically — no individual assignments are required.\n\n**Allowed accessLevel values:** 10 (Read), 20 (Write).\n\nSupports bulk creation: send an array with one or more items. A failure on one item does not affect others.\n\nAll responses use HTTP 200. Check each item's `success` field to determine the outcome. When `success` is false, the `error` field contains a description and `folderId` is null.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CreateAccountFolderRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Folders created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FolderCreatedResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/references/folder/sharedfolder": {
      "post": {
        "tags": [
          "References"
        ],
        "summary": "Assign Users to Personal Folders",
        "description": "Assigns one or more users to existing personal folders, shared folders. Supports both numeric and GUID folder IDs\n\n**Allowed accessLevel: 10 (Read), 20 (Write).** ",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AssignFolderUserRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Assignments processed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FolderUserAssignedResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/references/folder/tags": {
      "post": {
        "tags": [
          "References"
        ],
        "summary": "Insert Folder Tags",
        "description": "Creates one or more tags within existing personal reference folders.\n\nSupports bulk operations: each item in the request array may contain multiple tag names for the same folder. A failure on one tag does not prevent other tags in the same folder from being created.\n\nTag names cannot contain double quotes, backslashes, angle brackets, or control characters.\n\nAll responses use HTTP 200. The response contains two levels of status: a folder-level `success` field, and per-tag `success` fields inside the `tags` array.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/FolderTagsRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tags processed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FolderTagsCreatedResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/references/folder/tags/search": {
      "post": {
        "tags": [
          "References"
        ],
        "summary": "Get Folder Tags",
        "description": "Retrieves the tags associated with one or more reference folders.\n\nAccepts a POST body instead of query parameters to support batching multiple folder IDs in a single request.\n\nAn empty `tags` array is a valid result — it means the folder exists but has no tags assigned.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/GetFolderTagsRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tags retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FolderTagListResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/references/folder/citations": {
      "post": {
        "tags": [
          "References"
        ],
        "summary": "Create Citations",
        "description": "Creates one or more manual reference citations inside existing folders.\n\n**Required fields:** `folderId`, `title`.\n\n**Optional fields:** `publicationName`, `publicationDate`, `author`, `notes`, `abstract`, `doi`, `pmid`, `standardNumber1`, `standardNumber2`, `pages`, `issue`, `volume`, `subFolderId`, `tagsId`.\n\nSupports both numeric and GUID folder IDs. A failure on one citation does not affect others in the same request.\n\nAll responses use HTTP 200. Check each item's `success` field. When `success` is false, the `error` field contains a description and `citationId` is null.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CreateCitationRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Citations processed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CitationCreatedResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/references/folder/citations/attachments": {
      "post": {
        "tags": [
          "References"
        ],
        "summary": "Create Citation Attachment",
        "description": "Uploads a file and attaches it to an existing citation. The citation must already exist — this endpoint does not create citations. To create a citation and attach a file in one call, use POST /references/folder/citations/with-attachment.\n\nThe file is scanned for malware before upload. Infected files are rejected.\n\nSupports both numeric and GUID folder and citation IDs. FolderId and CitationId must both be numeric or both be non-numeric.\n\n**IsMain:** 0 = secondary attachment, 1 = primary attachment. Setting IsMain to 1 demotes the previous primary attachment.\n\n**Maximum file size: 100 MB.**",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "CitationId",
                  "File",
                  "FolderId",
                  "IsMain"
                ],
                "type": "object",
                "properties": {
                  "FolderId": {
                    "type": "string",
                    "description": "The folder containing the citation. Accepts numeric identifiers and GUID-format strings."
                  },
                  "CitationId": {
                    "type": "string",
                    "description": "The citation to attach the file to. Accepts numeric identifiers and GUID-format strings. FolderId and CitationId must both be numeric or both be non-numeric."
                  },
                  "IsMain": {
                    "type": "integer",
                    "description": "Whether this is the primary attachment. Accepted values: 0 (secondary), 1 (primary). Setting to 1 replaces the previous primary attachment.",
                    "format": "int32"
                  },
                  "File": {
                    "type": "string",
                    "description": "The file to upload. Maximum size: 100 MB. The file is scanned for malware before upload.",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "FolderId": {
                  "style": "form"
                },
                "CitationId": {
                  "style": "form"
                },
                "IsMain": {
                  "style": "form"
                },
                "File": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attachment processed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CitationAttachmentCreatedResult"
                }
              }
            }
          }
        }
      }
    },
    "/references/folder/citations/with-attachment": {
      "post": {
        "tags": [
          "References"
        ],
        "summary": "Create Citation With Attachment",
        "description": "Creates a new manual citation and uploads a file attachment in a single atomic operation. If the file upload or attachment recording fails, the citation is rolled back automatically.\n\nThe file is scanned for malware before upload. Infected files are rejected and no citation is created.\n\n**Required fields:** `folderId`, `title`, `isMain`, `file`.\n\n**Optional citation fields:** `publicationName`, `publicationDate`, `author`, `notes`, `abstract`, `doi`, `pmid`, `standardNumber1`, `standardNumber2`, `pages`, `issue`, `volume`, `subFolderId`, `tagsId`.\n\n**IsMain:** 0 = secondary attachment, 1 = primary attachment. \n\nSupports both numeric and GUID folder IDs.\n\n**Maximum file size: 100 MB.**",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "File",
                  "FolderId",
                  "IsMain",
                  "Title"
                ],
                "type": "object",
                "properties": {
                  "FolderId": {
                    "type": "string",
                    "description": "The folder in which to create the citation. Accepts numeric identifiers and GUID-format strings."
                  },
                  "Title": {
                    "type": "string",
                    "description": "The citation title. Required."
                  },
                  "PublicationName": {
                    "type": "string",
                    "description": "The publication or journal name. Optional."
                  },
                  "PublicationDate": {
                    "type": "string",
                    "description": "The publication date. Optional. Accepted formats: yyyy, yyyy-MM, yyyy-MM-dd."
                  },
                  "Author": {
                    "type": "string",
                    "description": "The author or authors. Optional. Accepts a comma-separated string."
                  },
                  "Notes": {
                    "type": "string",
                    "description": "Free-text notes. Optional."
                  },
                  "Abstract": {
                    "type": "string",
                    "description": "The citation abstract. Optional."
                  },
                  "Doi": {
                    "type": "string",
                    "description": "Digital Object Identifier. Optional."
                  },
                  "Pmid": {
                    "type": "string",
                    "description": "PubMed ID. Optional."
                  },
                  "StandardNumber1": {
                    "type": "string",
                    "description": "Primary standard number (e.g., ISSN). Optional."
                  },
                  "StandardNumber2": {
                    "type": "string",
                    "description": "Secondary standard number. Optional."
                  },
                  "Pages": {
                    "type": "string",
                    "description": "Page range. Optional."
                  },
                  "Issue": {
                    "type": "string",
                    "description": "Issue number. Optional."
                  },
                  "Volume": {
                    "type": "string",
                    "description": "Volume number. Optional."
                  },
                  "SubFolderId": {
                    "type": "string",
                    "description": "Sub-folder identifier. Optional. Accepts a comma-separated list of identifiers."
                  },
                  "TagsId": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "The identifiers of the tags to associate with the citation. Duplicate values are ignored. This field is optional."
                  },
                  "IsMain": {
                    "type": "integer",
                    "description": "Whether this is the primary attachment. Accepted values: 0 (secondary), 1 (primary). Setting to 1 replaces the previous primary attachment.",
                    "format": "int32"
                  },
                  "File": {
                    "type": "string",
                    "description": "The file to upload. Maximum size: 100 MB. The file is scanned for malware before upload.",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "FolderId": {
                  "style": "form"
                },
                "Title": {
                  "style": "form"
                },
                "PublicationName": {
                  "style": "form"
                },
                "PublicationDate": {
                  "style": "form"
                },
                "Author": {
                  "style": "form"
                },
                "Notes": {
                  "style": "form"
                },
                "Abstract": {
                  "style": "form"
                },
                "Doi": {
                  "style": "form"
                },
                "Pmid": {
                  "style": "form"
                },
                "StandardNumber1": {
                  "style": "form"
                },
                "StandardNumber2": {
                  "style": "form"
                },
                "Pages": {
                  "style": "form"
                },
                "Issue": {
                  "style": "form"
                },
                "Volume": {
                  "style": "form"
                },
                "SubFolderId": {
                  "style": "form"
                },
                "TagsId": {
                  "style": "form"
                },
                "IsMain": {
                  "style": "form"
                },
                "File": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Citation and attachment processed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CitationAttachmentCreatedResult"
                }
              }
            }
          }
        }
      }
    },
    "/references/folders": {
      "get": {
        "tags": [
          "References"
        ],
        "summary": "Get Personal Folders",
        "description": "Returns personal reference folders owned by the specified user (access level 30). Account Folders, My References folders, folders shared with the user (but not owned), and deleted folders are excluded.\n\nUses the authenticated session's CompanyId and AccountId as security scope.\n\nReturns `success=true` with `folders=null` when the user has no personal folders.",
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Folders retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderListResult"
                }
              }
            }
          }
        }
      }
    },
    "/user/customreferences/{userId}": {
      "get": {
        "tags": [
          "User Settings"
        ],
        "summary": "Get Customer Reference Fields",
        "description": "Returns Customer Reference field definitions and current values for the specified user.",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Customer Reference fields retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerReferencesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/users": {
      "get": {
        "tags": [
          "User Settings"
        ],
        "summary": "Get Users",
        "description": "Returns active users in the authenticated account. Uses the session's CompanyId and AccountId as security boundary.\n\n**search** (optional): filters by UserName, FirstName, LastName, or Email (case-insensitive).\n\n**limit** (optional): maximum results to return. Default: 50. Maximum allowed: 200.\n\nReturns success=true with users=null when no users match the criteria.",
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Users retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserListResult"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AGOrderType": {
        "enum": [
          "RequestPDF",
          "RequestPDFAndGenAI",
          "RequestGenAI",
          "RequestRental"
        ],
        "type": "string"
      },
      "AccountIntendedUse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "isDefault": {
            "type": "boolean"
          },
          "displayTitle": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ArticleDetailsPublic": {
        "type": "object",
        "properties": {
          "documentDeliveryPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "documentQuickDownloadAvailable": {
            "type": "boolean"
          },
          "documentRentalPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ArticleGalaxyOrder": {
        "type": "object",
        "properties": {
          "userInfo": {
            "$ref": "#/components/schemas/UserInfo"
          },
          "deliverToEmail": {
            "type": "string",
            "nullable": true
          },
          "citation": {
            "$ref": "#/components/schemas/Citation"
          },
          "intendedUseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "orderType": {
            "$ref": "#/components/schemas/AGOrderType"
          },
          "customerReferences": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true,
            "example": {
              "1": "string",
              "2": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "AssignFolderUserRequest": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string",
            "description": "The folder identifier. Accepts numeric identifiers and GUID-format strings (32 hex characters).",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "description": "The user to assign or update. Must be greater than zero.",
            "format": "int32"
          },
          "accessLevel": {
            "type": "integer",
            "description": "Access level to assign. Accepted values: 10 (Read), 20 (Write). Full access (30) is reserved for the folder owner and cannot be assigned through this endpoint.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "CheckAvailabilityPublicPayload": {
        "type": "object",
        "properties": {
          "articleDetails": {
            "$ref": "#/components/schemas/ArticleDetailsPublic"
          },
          "genAIRights": {
            "$ref": "#/components/schemas/GenAIRights"
          },
          "pdfLibraryAccess": {
            "$ref": "#/components/schemas/PDFLibraryAccessPublic"
          },
          "subscriptionAccess": {
            "$ref": "#/components/schemas/SubscriptionAccess"
          },
          "tokenAccess": {
            "$ref": "#/components/schemas/TokenAccessPublic"
          },
          "openAccess": {
            "$ref": "#/components/schemas/OpenAccess"
          },
          "customRequestId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CheckAvailabilityRequest": {
        "type": "object",
        "properties": {
          "doi": {
            "type": "string",
            "nullable": true
          },
          "pubmedId": {
            "type": "string",
            "nullable": true
          },
          "standardNumber": {
            "type": "string",
            "nullable": true
          },
          "standardNumber2": {
            "type": "string",
            "nullable": true
          },
          "publicationYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "intendedUseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "volume": {
            "type": "string",
            "nullable": true
          },
          "issue": {
            "type": "string",
            "nullable": true
          },
          "pages": {
            "type": "string",
            "nullable": true
          },
          "firstAuthor": {
            "type": "string",
            "nullable": true
          },
          "documentTitle": {
            "type": "string",
            "nullable": true
          },
          "publicationName": {
            "type": "string",
            "nullable": true
          },
          "customRequestId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Citation": {
        "type": "object",
        "properties": {
          "doi": {
            "type": "string",
            "nullable": true
          },
          "pubmedId": {
            "type": "string",
            "nullable": true
          },
          "standardNumber": {
            "type": "string",
            "nullable": true
          },
          "standardNumber2": {
            "type": "string",
            "nullable": true
          },
          "publicationName": {
            "type": "string",
            "nullable": true
          },
          "documentTitle": {
            "type": "string",
            "nullable": true
          },
          "publicationYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "volume": {
            "type": "string",
            "nullable": true
          },
          "issue": {
            "type": "string",
            "nullable": true
          },
          "firstPage": {
            "type": "string",
            "nullable": true
          },
          "lastPage": {
            "type": "string",
            "nullable": true
          },
          "pages": {
            "type": "string",
            "nullable": true
          },
          "firstAuthor": {
            "type": "string",
            "nullable": true
          },
          "authors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "abstract": {
            "type": "string",
            "nullable": true
          },
          "pageCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customRequestId": {
            "type": "string",
            "nullable": true
          },
          "citationType": {
            "$ref": "#/components/schemas/CitationType"
          }
        },
        "additionalProperties": false
      },
      "CitationAttachmentCreatedResult": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string",
            "description": "Echo of the folder identifier from the request.",
            "nullable": true
          },
          "citationId": {
            "type": "string",
            "description": "Echo of the citation identifier from the request.",
            "nullable": true
          },
          "attachmentId": {
            "type": "string",
            "description": "The generated attachment identifier (numeric or 32-character hex GUID). Null when Success is false.",
            "nullable": true
          },
          "success": {
            "type": "boolean",
            "description": "Indicates whether the attachment was uploaded and recorded successfully."
          },
          "error": {
            "type": "string",
            "description": "Error description when Success is false. Null when the operation succeeds.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CitationCreatedResult": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string",
            "description": "Echo of the folder identifier from the request.",
            "nullable": true
          },
          "citationId": {
            "type": "string",
            "description": "The generated citation identifier (numeric or 32-character hex GUID). Null when Success is false.",
            "nullable": true
          },
          "success": {
            "type": "boolean",
            "description": "Indicates whether the citation was created successfully."
          },
          "error": {
            "type": "string",
            "description": "Error description when Success is false. Null when the operation succeeds.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CitationType": {
        "enum": [
          "Journal",
          "Book"
        ],
        "type": "string"
      },
      "CreateAccountFolderRequest": {
        "type": "object",
        "properties": {
          "folderName": {
            "type": "string",
            "description": "The name of the folder to create. Cannot contain double quotes, backslashes, angle brackets, or control characters.",
            "nullable": true
          },
          "accessLevel": {
            "type": "integer",
            "description": "Access level granted to all users in the account. Accepted values: 10 (Read), 20 (Write).",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "CreateCitationRequest": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string",
            "description": "The folder in which to create the citation. Accepts numeric identifiers and GUID-format strings.",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "The citation title. Required.",
            "nullable": true
          },
          "publicationName": {
            "type": "string",
            "description": "The publication or journal name. Optional.",
            "nullable": true
          },
          "publicationDate": {
            "type": "string",
            "description": "The publication date. Optional. Accepted formats: yyyy, yyyy-MM, yyyy-MM-dd.",
            "nullable": true
          },
          "author": {
            "type": "string",
            "description": "The author or authors. Optional. Accepts a comma-separated string.",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Free-text notes. Optional.",
            "nullable": true
          },
          "abstract": {
            "type": "string",
            "description": "The citation abstract. Optional.",
            "nullable": true
          },
          "doi": {
            "type": "string",
            "description": "Digital Object Identifier. Optional.",
            "nullable": true
          },
          "pmid": {
            "type": "string",
            "description": "PubMed ID. Optional.",
            "nullable": true
          },
          "standardNumber1": {
            "type": "string",
            "description": "Primary standard number (e.g., ISSN). Optional.",
            "nullable": true
          },
          "standardNumber2": {
            "type": "string",
            "description": "Secondary standard number. Optional.",
            "nullable": true
          },
          "pages": {
            "type": "string",
            "description": "Page range. Optional.",
            "nullable": true
          },
          "issue": {
            "type": "string",
            "description": "Issue number. Optional.",
            "nullable": true
          },
          "volume": {
            "type": "string",
            "description": "Volume number. Optional.",
            "nullable": true
          },
          "subFolderId": {
            "type": "string",
            "description": "Sub-folder identifier. Optional. Accepts a comma-separated list of identifiers.",
            "nullable": true
          },
          "tagsId": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The identifiers of the tags to associate with the citation. Duplicate values are ignored. This field is optional.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CreateUserFolderRequest": {
        "type": "object",
        "properties": {
          "folderName": {
            "type": "string",
            "description": "The name of the folder to create. Cannot contain double quotes, backslashes, angle brackets, or control characters.",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "description": "The user who will become the folder owner. Must be greater than zero.",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "CustomerReferenceDefinitionItem": {
        "type": "object",
        "properties": {
          "customerReferenceId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "fieldType": {
            "type": "string",
            "nullable": true
          },
          "fieldTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "validationTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "isRequired": {
            "type": "boolean"
          },
          "requiredMessage": {
            "type": "string",
            "nullable": true
          },
          "maxLength": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerReferenceOption"
            },
            "nullable": true
          },
          "currentValue": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomerReferenceOption": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "nullable": true
          },
          "displayTitle": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomerReferenceUserDefaultValues": {
        "type": "object",
        "properties": {
          "customerReferenceId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomerReferencesResponse": {
        "type": "object",
        "properties": {
          "customerReferenceEnabled": {
            "type": "boolean"
          },
          "customerReferencesDefinitions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerReferenceDefinitionItem"
            },
            "nullable": true
          },
          "customerReferenceUserDefaultValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerReferenceUserDefaultValues"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FolderCreatedResult": {
        "type": "object",
        "properties": {
          "folderName": {
            "type": "string",
            "description": "Echo of the folder name from the request. Used to correlate results in bulk operations.",
            "nullable": true
          },
          "folderId": {
            "type": "string",
            "description": "The generated folder identifier (numeric or 32-character hex GUID). Null when Success is false.",
            "nullable": true
          },
          "success": {
            "type": "boolean",
            "description": "Indicates whether the folder was created successfully."
          },
          "error": {
            "type": "string",
            "description": "Error description when Success is false. Null when the operation succeeds.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FolderListItem": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string",
            "description": "The folder identifier. May be a numeric string or a GUID-format string.",
            "nullable": true
          },
          "folderName": {
            "type": "string",
            "description": "The folder display name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FolderListResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the folder list was retrieved successfully."
          },
          "folders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FolderListItem"
            },
            "description": "Folders owned by the specified user. Null when the user has no personal folders.",
            "nullable": true
          },
          "error": {
            "type": "string",
            "description": "Error description when Success is false. Null when the operation succeeds.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FolderTagListResult": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string",
            "description": "Echo of the folder identifier from the request.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagItem"
            },
            "description": "Tags associated with the folder. Empty list when the folder has no tags.",
            "nullable": true
          },
          "success": {
            "type": "boolean",
            "description": "Indicates whether the tag list was retrieved successfully."
          },
          "error": {
            "type": "string",
            "description": "Error description when Success is false. Null when the operation succeeds.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FolderTagsCreatedResult": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string",
            "description": "Echo of the folder identifier from the request.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagCreatedItem"
            },
            "description": "Results for each tag name submitted in the request. Empty when a folder-level error occurred.",
            "nullable": true
          },
          "success": {
            "type": "boolean",
            "description": "True if the folder was found and at least one tag was processed successfully."
          },
          "error": {
            "type": "string",
            "description": "Folder-level error description. Null when the folder was found and processed.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FolderTagsRequest": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string",
            "description": "The folder identifier. Accepts numeric identifiers and GUID-format strings.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tag names to create in the folder. Cannot be empty. Each name cannot contain double quotes, backslashes, angle brackets, or control characters.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FolderUserAssignedResult": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string",
            "description": "Echo of the folder identifier from the request.",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "description": "Echo of the user identifier from the request.",
            "format": "int32"
          },
          "success": {
            "type": "boolean",
            "description": "Indicates whether the assignment was created or updated successfully."
          },
          "error": {
            "type": "string",
            "description": "Error description when Success is false. Null when the operation succeeds.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GenAIRights": {
        "type": "object",
        "properties": {
          "isGenAIAvailable": {
            "type": "boolean"
          },
          "genAIAvailability": {
            "type": "string",
            "nullable": true
          },
          "genAIPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GetFolderTagsRequest": {
        "type": "object",
        "properties": {
          "folderId": {
            "type": "string",
            "description": "The folder identifier. Accepts numeric identifiers and GUID-format strings.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OpenAccess": {
        "type": "object",
        "properties": {
          "openAccessStatus": {
            "$ref": "#/components/schemas/OpenAccessStatus"
          },
          "linkoutUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OpenAccessStatus": {
        "enum": [
          "Unknown",
          "OpenAccess",
          "NotOpenAccess",
          "FreeToRead"
        ],
        "type": "string"
      },
      "OrderCreatedResponse": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "OrderDownloadUrls": {
        "type": "object",
        "properties": {
          "pdfPresignedUrl": {
            "type": "string",
            "nullable": true
          },
          "supplementalPresignedUrl": {
            "type": "string",
            "nullable": true
          },
          "rentalViewerUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OrderInfo": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "accountId": {
            "type": "integer",
            "format": "int32"
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "orderId": {
            "type": "integer",
            "format": "int32"
          },
          "randomId": {
            "type": "integer",
            "format": "int32"
          },
          "orderDateUtc": {
            "type": "string",
            "format": "date-time"
          },
          "standardNumber": {
            "type": "string",
            "nullable": true
          },
          "standardNumber2": {
            "type": "string",
            "nullable": true
          },
          "publicationName": {
            "type": "string",
            "nullable": true
          },
          "publicationYear": {
            "type": "string",
            "nullable": true
          },
          "volume": {
            "type": "string",
            "nullable": true
          },
          "issue": {
            "type": "string",
            "nullable": true
          },
          "pages": {
            "type": "string",
            "nullable": true
          },
          "authors": {
            "type": "string",
            "nullable": true
          },
          "documentTitle": {
            "type": "string",
            "nullable": true
          },
          "doi": {
            "type": "string",
            "nullable": true
          },
          "pubMedId": {
            "type": "string",
            "nullable": true
          },
          "archiveId": {
            "type": "string",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "subStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "subStatus": {
            "type": "string",
            "nullable": true
          },
          "pdfPresignedUrl": {
            "type": "string",
            "nullable": true
          },
          "supplementalPresignedUrl": {
            "type": "string",
            "nullable": true
          },
          "rentalViewerUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PDFLibraryAccessPublic": {
        "type": "object",
        "properties": {
          "isInArchive": {
            "type": "boolean"
          },
          "deepLinkUrl": {
            "type": "string",
            "nullable": true
          },
          "pdfPresignedUrl": {
            "type": "string",
            "nullable": true
          },
          "supplementalPresignedUrl": {
            "type": "string",
            "nullable": true
          },
          "supplementalMaterialsAvailable": {
            "type": "boolean"
          },
          "pdfAvailable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ReuseRight": {
        "enum": [
          "Unknown",
          "ExplicitlyGranted",
          "ExplicitlyDenied",
          "RequestAQuote"
        ],
        "type": "string"
      },
      "ReuseRightsRequest": {
        "type": "object",
        "properties": {
          "doi": {
            "type": "string",
            "nullable": true
          },
          "pubmedId": {
            "type": "string",
            "nullable": true
          },
          "standardNumber": {
            "type": "string",
            "nullable": true
          },
          "standardNumber2": {
            "type": "string",
            "nullable": true
          },
          "publicationYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "countryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReuseRightsResult": {
        "type": "object",
        "properties": {
          "intendedUseId": {
            "type": "integer",
            "format": "int32"
          },
          "intendedUseDisplayTitle": {
            "type": "string",
            "nullable": true
          },
          "reUseRight": {
            "$ref": "#/components/schemas/ReuseRight"
          },
          "notOrderable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "SubscriptionAccess": {
        "type": "object",
        "properties": {
          "isSubscribed": {
            "type": "boolean"
          },
          "linkoutUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TagCreatedItem": {
        "type": "object",
        "properties": {
          "tagName": {
            "type": "string",
            "description": "The tag name from the request.",
            "nullable": true
          },
          "tagId": {
            "type": "string",
            "description": "The generated tag identifier. Null when Success is false.",
            "nullable": true
          },
          "success": {
            "type": "boolean",
            "description": "Indicates whether the tag was created successfully."
          },
          "error": {
            "type": "string",
            "description": "Error description when Success is false. Null when the operation succeeds.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TagItem": {
        "type": "object",
        "properties": {
          "tagId": {
            "type": "string",
            "description": "The tag identifier. May be a numeric string or a GUID-format string.",
            "nullable": true
          },
          "tagName": {
            "type": "string",
            "description": "The tag display name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TokenAccessPublic": {
        "type": "object",
        "properties": {
          "isTokenAvailable": {
            "type": "boolean"
          },
          "linkoutUrl": {
            "type": "string",
            "nullable": true
          },
          "price": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "UserGetInfoResult": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "The company identifier.",
            "format": "int32"
          },
          "accountId": {
            "type": "integer",
            "description": "The account identifier.",
            "format": "int32"
          },
          "userId": {
            "type": "integer",
            "description": "The unique user identifier.",
            "format": "int32"
          },
          "userName": {
            "type": "string",
            "description": "The user's login name.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The user's email address.",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "The user's first name.",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "description": "The user's last name.",
            "nullable": true
          },
          "isActive": {
            "type": "boolean",
            "description": "Indicates whether the user account is active."
          }
        },
        "additionalProperties": false
      },
      "UserInfo": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "userName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "billingReference": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UserListResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Indicates whether the user list was retrieved successfully."
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserGetInfoResult"
            },
            "description": "Active users in the account matching the search criteria. Null when no users match or the operation failed.",
            "nullable": true
          },
          "error": {
            "type": "string",
            "description": "Error description when Success is false. Null when the operation succeeds.",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Authorization": {
        "type": "apiKey",
        "description": "Authorization header",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "Authorization": [ ]
    }
  ]
}