openapi: "3.0.2" info: title: 1Password Connect description: >- REST API interface for 1Password Connect. version: "1.7.1" contact: name: 1Password Integrations email: support@1password.com url: https://support.1password.com/ servers: - url: http://localhost:8080/v1 tags: - name: Items description: Access and manage items inside 1Password Vaults - name: Vaults description: Access 1Password Vaults - name: Activity description: Access API Request Activity components: securitySchemes: ConnectToken: type: http scheme: bearer bearerFormat: JWT schemas: ErrorResponse: type: object properties: status: type: integer description: HTTP Status Code message: type: string description: A message detailing the error File: type: object properties: id: type: string description: ID of the file name: type: string description: Name of the file size: type: integer description: Size in bytes of the file content_path: type: string description: Path of the Connect API that can be used to download the contents of this file. readOnly: true section: type: object description: For files that are in a section, this field describes the section. properties: id: type: string content: type: string format: byte description: Base64-encoded contents of the file. Only set if size <= OP_MAX_INLINE_FILE_SIZE_KB kb and `inline_files` is set to `true`. example: id: 6r65pjq33banznomn7q22sj44e name: foo.txt size: 35 content_path: v1/vaults/ionaiwtdvgclrixbt6ztpqcxnq/items/p7eflcy7f5mk7vg6zrzf5rjjyu/files/6r65pjq33banznomn7q22sj44e/content content: VGhlIGZ1dHVyZSBiZWxvbmdzIHRvIHRoZSBjdXJpb3VzLgo= Vault: type: object properties: id: type: string pattern: '^[\da-z]{26}$' name: type: string description: type: string attributeVersion: type: integer description: The vault version contentVersion: type: integer description: The version of the vault contents items: description: Number of active items in the vault type: integer type: type: string enum: - USER_CREATED - PERSONAL - EVERYONE - TRANSFER createdAt: type: string format: date-time readOnly: true updatedAt: type: string format: date-time readOnly: true GeneratorRecipe: description: The recipe is used in conjunction with the "generate" property to set the character set used to generate a new secure value type: object properties: length: type: integer description: Length of the generated value default: 32 minimum: 1 maximum: 64 characterSets: type: array items: type: string enum: - LETTERS - DIGITS - SYMBOLS minimum: 0 maximum: 3 uniqueItems: true excludeCharacters: type: string description: "List of all characters that should be excluded from generated passwords." example: "abc1" Item: type: object required: - vault - category properties: id: type: string pattern: '^[\da-z]{26}$' title: type: string vault: type: object required: - id properties: id: type: string pattern: '^[\da-z]{26}$' category: type: string enum: - "LOGIN" - "PASSWORD" - "API_CREDENTIAL" - "SERVER" - "DATABASE" - "CREDIT_CARD" - "MEMBERSHIP" - "PASSPORT" - "SOFTWARE_LICENSE" - "OUTDOOR_LICENSE" - "SECURE_NOTE" - "WIRELESS_ROUTER" - "BANK_ACCOUNT" - "DRIVER_LICENSE" - "IDENTITY" - "REWARD_PROGRAM" - "DOCUMENT" - "EMAIL_ACCOUNT" - "SOCIAL_SECURITY_NUMBER" - "MEDICAL_RECORD" - "SSH_KEY" - "CUSTOM" urls: type: array items: type: object required: - href properties: label: type: string primary: type: boolean href: type: string format: url example: - primary: true href: https://example.com - href: https://example.org favorite: type: boolean default: false tags: type: array items: type: string version: type: integer state: type: string readOnly: true enum: - "ARCHIVED" - "DELETED" createdAt: type: string format: date-time readOnly: true updatedAt: type: string format: date-time readOnly: true lastEditedBy: type: string readOnly: true FullItem: allOf: - $ref: "#/components/schemas/Item" - type: object properties: sections: type: array items: type: object properties: id: type: string label: type: string fields: type: array items: $ref: '#/components/schemas/Field' files: type: array items: $ref: '#/components/schemas/File' Field: type: object required: - id - type properties: id: type: string section: type: object properties: id: type: string type: type: string default: "STRING" enum: - "STRING" - "EMAIL" - "CONCEALED" - "URL" - "TOTP" - "DATE" - "MONTH_YEAR" - "MENU" purpose: description: Some item types, Login and Password, have fields used for autofill. This property indicates that purpose and is required for some item types. type: string enum: - "" - "USERNAME" - "PASSWORD" - "NOTES" label: type: string value: type: string generate: description: If value is not present then a new value should be generated for this field type: boolean default: false recipe: $ref: "#/components/schemas/GeneratorRecipe" entropy: description: For fields with a purpose of `PASSWORD` this is the entropy of the value type: number readOnly: true APIRequest: description: Represents a request that was made to the API. Including what Token was used and what resource was accessed. type: object properties: requestId: description: The unique id used to identify a single request. type: string format: uuid timestamp: description: The time at which the request was processed by the server. type: string format: date-time readOnly: true action: type: string enum: - READ - CREATE - UPDATE - DELETE result: type: string enum: - SUCCESS - DENY actor: type: object properties: id: type: string format: uuid account: type: string jti: type: string userAgent: type: string requestIp: type: string resource: type: object properties: type: type: string enum: - ITEM - VAULT vault: type: object properties: id: type: string pattern: '^[\da-z]{26}$' item: type: object properties: id: type: string pattern: '^[\da-z]{26}$' itemVersion: type: integer Patch: type: array items: type: object properties: op: type: string enum: [ add, remove, replace ] path: type: string description: An RFC6901 JSON Pointer pointing to the Item document, an Item Attribute, and Item Field by Field ID, or an Item Field Attribute example: "/fields/06gnn2b95example10q91512p5/label" value: type: object required: - op - path ServiceDependency: description: The state of a registered server dependency. type: object properties: service: type: string status: type: string message: type: string description: Human-readable message for explaining the current state. paths: /activity: get: operationId: GetApiActivity tags: - Activity summary: Retrieve a list of API Requests that have been made. security: - ConnectToken: [ ] parameters: - in: query name: limit schema: type: integer example: 10 default: 50 description: How many API Events should be retrieved in a single request. - in: query name: offset schema: type: integer example: 50 default: 0 description: How far into the collection of API Events should the response start responses: "200": description: OK headers: Content-Range: description: An decription of what part of the collection has been returned as well as the total size. schema: type: string example: 1-50/1134 content: application/json: schema: type: array items: $ref: "#/components/schemas/APIRequest" "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature /vaults: get: operationId: GetVaults tags: - Vaults summary: Get all Vaults security: - ConnectToken: [ ] parameters: - in: query name: filter schema: type: string example: name eq "Some Vault Name" description: Filter the Vault collection based on Vault name using SCIM eq filter responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/Vault" "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature /vaults/{vaultUuid}: get: operationId: GetVaultById tags: - Vaults summary: Get Vault details and metadata security: - ConnectToken: [ ] parameters: - in: path name: vaultUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Vault to fetch Items from responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/Vault" "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature "403": description: Unauthorized access content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 403 message: vault {vaultUuid} is not in scope "404": description: Vault not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 404 message: vault {itemUuid} not found /vaults/{vaultUuid}/items: get: operationId: GetVaultItems tags: - Items summary: Get all items for inside a Vault security: - ConnectToken: [ ] parameters: - in: path name: vaultUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Vault to fetch Items from - in: query name: filter schema: type: string example: title eq "Some Item Name" description: Filter the Item collection based on Item name using SCIM eq filter responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/Item" "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature "404": description: Vault not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 404 message: vault {vaultUuid} not found post: operationId: CreateVaultItem tags: - Items summary: Create a new Item security: - ConnectToken: [ ] parameters: - in: path name: vaultUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Vault to create an Item in requestBody: content: application/json: schema: $ref: "#/components/schemas/FullItem" responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/FullItem" "400": description: Unable to create item due to invalid input content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 400 message: Invalid item category "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature "403": description: Unauthorized access content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 403 message: vault {vaultUuid} is not in scope "404": description: Item not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: vaultNotFound: summary: Vault not found value: status: 404 message: vault {vaultUuid} not found /vaults/{vaultUuid}/items/{itemUuid}: get: operationId: GetVaultItemById tags: - Items summary: Get the details of an Item security: - ConnectToken: [ ] parameters: - in: path name: vaultUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Vault to fetch Item from - in: path name: itemUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Item to fetch responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/FullItem" "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature "403": description: Unauthorized access content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 403 message: vault {vaultUuid} is not in scope "404": description: Item not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: itemNotFound: summary: Item not found value: status: 404 message: item {itemUuid} not found vaultNotFound: summary: Vault not found value: status: 404 message: vault {vaultUuid} not found put: operationId: UpdateVaultItem tags: - Items summary: Update an Item security: - ConnectToken: [ ] parameters: - in: path name: vaultUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Item's Vault - in: path name: itemUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Item to update requestBody: content: application/json: schema: $ref: "#/components/schemas/FullItem" responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/FullItem" "400": description: Unable to create item due to invalid input content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 400 message: The item doesn't have a {example field name} field. "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature "403": description: Unauthorized access content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 403 message: vault {vaultUuid} is not in scope "404": description: Item not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: itemNotFound: summary: Item not found value: status: 404 message: item {itemUuid} not found vaultNotFound: summary: Vault not found value: status: 404 message: vault {vaultUuid} not found delete: operationId: DeleteVaultItem tags: - Items summary: Delete an Item security: - ConnectToken: [ ] parameters: - in: path name: vaultUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Vault the item is in - in: path name: itemUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Item to update responses: "204": description: Successfully deleted an item "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature "403": description: Unauthorized access content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 403 message: vault {vaultUuid} is not in scope "404": description: Item not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: vaultNotFound: summary: Vault not found value: status: 404 message: vault {vaultUuid} not found patch: description: > Applies a modified [RFC6902 JSON Patch](https://tools.ietf.org/html/rfc6902) document to an Item or ItemField. This endpoint only supports `add`, `remove` and `replace` operations. When modifying a specific ItemField, the ItemField's ID in the `path` attribute of the operation object: `/fields/{fieldId}` operationId: PatchVaultItem tags: - Items summary: Update a subset of Item attributes security: - ConnectToken: [ ] parameters: - in: path name: vaultUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Vault the item is in - in: path name: itemUuid schema: type: string pattern: '^[\da-z]{26}$' required: true description: The UUID of the Item to update requestBody: content: application/json: schema: $ref: "#/components/schemas/Patch" examples: ReplaceAllAttributes: value: - op: replace path: "/" value: { "title": "New Title", "favorite": true, "tags": [ "tag1", "tag2" ], "...": "Any attr from FullItem schema" } summary: Replace an entire Item with new fields. Equivalent to a PUT request. PatchItemAttr: value: - op: "replace" path: "/favorite" value: true - op: "remove" path: "/tags/1" summary: Update specific Item attributes PatchItemField: value: - op: "add" path: "/fields" value: { "label": "New Field", "type": "string", "value": "hunter2" } summary: Add a new ItemField to the Item PatchItemFieldWithID: value: - op: "replace" path: "/fields/r9qxq7xnhfhukoxsc8ymqr0y11" value: { "label": "Replacement Title", "type": "string", "value": "new value" } - op: "remove" path: "/fields/h2nl155dshi043yse7wa3u1hs7" summary: Modify or remove an ItemField. PatchItemFieldAttr: value: - op: "add" path: "/fields/s2ju540zlna8bdj4uro7sj64rk/label" value: "New field name" - op: "remove" path: "/fields/s2ju540zlna8bdj4uro7sj64rk/value" summary: Modify a specific ItemField attribute. responses: "200": description: OK - Item updated. If no Patch operations were provided, Item is unmodified. content: application/json: schema: $ref: "#/components/schemas/FullItem" "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature "403": description: Unauthorized access content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 403 message: vault {vaultUuid} is not in scope "404": description: Item not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: itemNotFound: summary: Item not found value: status: 404 message: item {itemUuid} not found vaultNotFound: summary: Vault not found value: status: 404 message: vault {vaultUuid} not found /vaults/{vaultUuid}/items/{itemUuid}/files: get: operationId: GetItemFiles tags: - Files summary: Get all the files inside an Item security: - ConnectToken: [ ] parameters: - in: path name: vaultUuid schema: type: string format: uuid required: true description: The UUID of the Vault to fetch Items from - in: path name: itemUuid schema: type: string format: uuid required: true description: The UUID of the Item to fetch files from - in: query name: inline_files schema: type: boolean example: true description: Tells server to return the base64-encoded file contents in the response. responses: "200": description: OK content: application/json: schema: type: array items: $ref: "#/components/schemas/File" "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature "404": description: Item not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: itemNotFound: summary: Item not found value: status: 404 message: item {itemUuid} not found vaultNotFound: summary: Vault not found value: status: 404 message: vault {vaultUuid} not found "413": description: File content too large to display content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: fileTooLarge: summary: File too large value: status: 413 message: File is too large to inline in request. Use the /v1/vaults/{vaultUUID}/items/{itemUUID}/files/{fileUUID}/content endpoint instead. /vaults/{vaultUuid}/items/{itemUuid}/files/{fileUuid}: get: operationId: GetDetailsOfFileById tags: - Files summary: Get the details of a File security: - ConnectToken: [ ] parameters: - in: path name: vaultUuid schema: type: string format: uuid required: true description: The UUID of the Vault to fetch Item from - in: path name: itemUuid schema: type: string format: uuid required: true description: The UUID of the Item to fetch File from - in: path name: fileUuid schema: type: string format: uuid required: true description: The UUID of the File to fetch - in: query name: inline_files schema: type: boolean example: true description: Tells server to return the base64-encoded file contents in the response. responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/File" "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature "403": description: Unauthorized access content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 403 message: vault {vaultUuid} is not in scope "404": description: File not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: fileNotFound: summary: File not found value: status: 404 message: file {fileUuid} not found itemNotFound: summary: Item not found value: status: 404 message: item {itemUuid} not found vaultNotFound: summary: Vault not found value: status: 404 message: vault {vaultUuid} not found "413": description: File content too large to display content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: fileTooLarge: summary: File too large value: status: 413 message: File is too large to inline in request. Use the /v1/vaults/{vaultUUID}/items/{itemUUID}/files/{fileUUID}/content endpoint instead. /vaults/{vaultUuid}/items/{itemUuid}/files/{fileUuid}/content: parameters: - in: path name: vaultUuid schema: type: string format: uuid required: true description: The UUID of the Vault the item is in - in: path name: itemUuid schema: type: string format: uuid required: true description: The UUID of the Item the File is in - in: path name: fileUuid required: true schema: type: string description: UUID of the file to get content from get: operationId: DownloadFileByID tags: - Files summary: Get the content of a File security: - ConnectToken: [ ] responses: "200": description: "Success" content: application/octet-stream: schema: type: string format: binary headers: Content-Disposition: schema: type: string example: attachment; filename="privkey.pem" Content-Length: schema: type: string example: "6432" "401": description: Invalid or missing token content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: status: 401 message: Invalid token signature "404": description: File not found content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" examples: fileNotFound: summary: File not found value: status: 404 message: file {fileUuid} not found itemNotFound: summary: Item not found value: status: 404 message: item {itemUuid} not found vaultNotFound: summary: Vault not found value: status: 404 message: vault {vaultUuid} not found /heartbeat: get: operationId: GetHeartbeat tags: - Health summary: Ping the server for liveness servers: - url: http://localhost:8080 responses: "200": description: OK content: text/plain: schema: type: string example: . /health: get: operationId: GetServerHealth tags: - Health summary: Get state of the server and its dependencies. servers: - url: http://localhost:8080 responses: "200": description: OK content: application/json: schema: type: object required: [ "name", "version" ] properties: name: type: string version: type: string description: The Connect server's version dependencies: type: array items: $ref: "#/components/schemas/ServiceDependency" examples: WaitingForAPIRequest: value: name: 1Password Connect API version: 1.2.1 dependencies: - service: sync status: "TOKEN_NEEDED" - service: sqlite status: "ACTIVE" message: "Connected to./1password.sqlite" summary: API server waiting for first authenticated request /metrics: get: operationId: GetPrometheusMetrics tags: - Metrics description: See Prometheus documentation for a complete data model. summary: Query server for exposed Prometheus metrics servers: - url: http://localhost:8080 responses: "200": description: Successfully returned Prometheus metrics content: text/plain: schema: type: string example: | # HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles. # TYPE go_gc_duration_seconds summary go_gc_duration_seconds{quantile="0"} 2.9153e-05 go_gc_duration_seconds{quantile="0.25"} 6.2832e-05 go_gc_duration_seconds{quantile="0.5"} 9.7187e-05 go_gc_duration_seconds{quantile="0.75"} 0.000112967 go_gc_duration_seconds{quantile="1"} 0.000215819 go_gc_duration_seconds_sum 0.001376862 go_gc_duration_seconds_count 14