openapi: 3.1.0 info: title: Abound API - v4 1099-INT Users API version: '4' description: 'Abound was a US tax-compliance API for platforms and marketplaces: W-9 / W-8BEN / W-8BEN-E collection, real-time TIN verification against the IRS, and generation, filing, correction, voiding and physical mailing of Form 1099-NEC, 1099-MISC, 1099-K and 1099-INT with federal and state tax authorities. NOTE: This document is a mechanical conversion of the first-party Fern API Definition that Abound shipped inside its official npm package @withabound/node-sdk (v6.0.68). Abound was acquired and the service has been retired: the withabound.com DNS zone is fully de-delegated and the API hosts no longer resolve. This spec is preserved as a historical record of the API surface.' x-status: retired servers: - url: https://production-api.withabound.com description: Production (retired - host no longer resolves) - url: https://sandbox-api.withabound.com description: Sandbox (retired - host no longer resolves) security: - bearerAuth: [] tags: - name: Users paths: /v4/users: get: operationId: usersList tags: - Users summary: List all users description: Returns a list of users. Up to 100 users are returned per request. parameters: - name: page in: query required: false schema: $ref: '#/components/schemas/Page' - name: email in: query required: false schema: $ref: '#/components/schemas/Email' - name: foreignId in: query required: false schema: $ref: '#/components/schemas/ForeignId' responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/UserSchema' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorBadRequestSchema' example: errors: - field: metadata.key message: Expected metadata.key to be of type string, but received number '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Unauthorized '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Not Found '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Internal Server Error post: operationId: usersCreate tags: - Users summary: Create a user description: Creates a user for a single end-user of your application. parameters: - name: Idempotency-Key in: header required: false schema: $ref: '#/components/schemas/IdempotencyKey' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserRequestSchema' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UserSchema' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorBadRequestSchema' example: errors: - field: metadata.key message: Expected metadata.key to be of type string, but received number '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Unauthorized '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Not Found '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Conflict '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Internal Server Error /v4/users/{userId}: get: operationId: usersRetrieve tags: - Users summary: Retrieve a user description: Retrieves the details of an existing user. parameters: - name: userId in: path required: true schema: $ref: '#/components/schemas/UserId' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UserSchema' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorBadRequestSchema' example: errors: - field: metadata.key message: Expected metadata.key to be of type string, but received number '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Unauthorized '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Not Found '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Internal Server Error put: operationId: usersUpdate tags: - Users summary: Update a user description: Updates an existing user. Any body parameters not provided will be removed. parameters: - name: userId in: path required: true schema: $ref: '#/components/schemas/UserId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserRequestSchema' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UserSchema' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorBadRequestSchema' example: errors: - field: metadata.key message: Expected metadata.key to be of type string, but received number '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Unauthorized '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Not Found '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/DefaultErrorSchema' example: message: Conflict components: schemas: Email: type: string description: Filters the list of users based on the `email` field. UserId: type: string description: The unique identifier for a single end-user of your application. Page: type: integer description: The specific page of results you're requesting. Responses are limited to a maximum of 100 records. DefaultErrorSchema: type: object properties: message: type: string description: The error message associated with the response status code. required: - message IdempotencyKey: type: string description: The unique key used to identify a request that has already been processed. ForeignId: type: string description: The customer-specific unique identifier associated to an Abound record. Allows developers to forego making their own tables every time they integrate and/or add an application. UserRequestSchema: type: object properties: email: type: string description: The user's email address. Abound assume's you have taken the proper steps to verify the ownership of this email address. deprecated: true foreignId: type: string description: The customer-specific unique identifier associated with this user. metadata: type: object additionalProperties: type: string description: Use metadata for storing additional user data. For filtering, please use `foreignId`. examples: - foreignId: my-foreign-id ErrorBadRequestSchema: type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorBadRequestSchemaErrorsItem' description: The error message(s) associated with the response status code. required: - errors ErrorBadRequestSchemaErrorsItem: type: object properties: field: type: string description: The field that caused the error. message: type: string description: The error message associated with the field. required: - message UserSchema: allOf: - $ref: '#/components/schemas/UserRequestSchema' - type: object properties: id: type: string description: The unique identifier for this user. createdAt: type: string format: date-time description: The creation date and time of the user in `ISO 8601` format. required: - createdAt - id examples: - id: userId_sampleXGMFnhOpeR createdAt: '2024-01-01T00:00:00.000Z' foreignId: my-foreign-id securitySchemes: bearerAuth: type: http scheme: bearer description: Bearer token. The token is the concatenation of your Abound appId and appSecret separated by a period, e.g. `appId_xxx.appSecret_yyy`.