> ## Documentation Index
> Fetch the complete documentation index at: https://help.gorelo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Lists deleted records

> Lists records that have been deleted, so a copy kept in sync through this API can remove them. Results are sorted by `DeletedOn` ascending, then type id, then id, using cursor pagination.

Each record appears once, with its latest deletion; this is not a history. A record restored in the Gorelo app leaves this feed and appears in its normal list again. `DeletedOn` is the deleted record's last update, so it can move later if the deleted record is edited.

A contact is listed here when it was deleted, and also when its client was deleted, since `GET /v1/contacts` stops listing a deleted client's contacts. Such a contact's `DeletedOn` is the later of the contact's and the client's last update. In the same way, a task is listed when it was deleted and also when its project was deleted, with the later of the task's and the project's last update.

An invoice is listed when it was deleted. A voided invoice is not deleted: it is still returned by `GET /v1/invoices`.

A record with no recorded last update has no deletion time and is not listed.

Each type needs read access on its own scope: clients `Clients`, contacts `Contacts`, contracts, items and invoices `Billing`, tickets `Tickets`, custom assets `Assets`, projects and tasks `Project`. Asking for a type the key cannot read is a 403 with code `070208` on `TypeIds`.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/deletions
openapi: 3.0.4
info:
  title: Public API
  description: Gorelo Public API documentation.
  version: 1.0.0
servers:
  - url: https://api.usw.gorelo.io
    description: US
  - url: https://api.aue.gorelo.io
    description: Australia
security:
  - ApiKeyAuth: []
tags:
  - name: Attachments
    description: "Uploading a file, for anything that can carry one. One endpoint rather than one per record\r\ntype, because the upload itself is identical - only the record it is checked against differs."
  - name: Alerts
    description: Alerts management operations
  - name: Assets
    description: Assets management operations
  - name: Billing
    description: Billing management operations
  - name: Tickets
    description: Tickets management operations
  - name: Clients
    description: Clients management operations
  - name: Contacts
    description: Contacts management operations
  - name: Deletions
    description: Deletions management operations
  - name: Documents
    description: Documents management operations
  - name: Forms
    description: Forms management operations
  - name: Organization
    description: Organization management operations
  - name: Projects
    description: Projects management operations
paths:
  /v1/deletions:
    get:
      tags:
        - Deletions
      summary: Lists deleted records
      description: >-
        Lists records that have been deleted, so a copy kept in sync through
        this API can remove them. Results are sorted by `DeletedOn` ascending,
        then type id, then id, using cursor pagination.


        Each record appears once, with its latest deletion; this is not a
        history. A record restored in the Gorelo app leaves this feed and
        appears in its normal list again. `DeletedOn` is the deleted record's
        last update, so it can move later if the deleted record is edited.


        A contact is listed here when it was deleted, and also when its client
        was deleted, since `GET /v1/contacts` stops listing a deleted client's
        contacts. Such a contact's `DeletedOn` is the later of the contact's and
        the client's last update. In the same way, a task is listed when it was
        deleted and also when its project was deleted, with the later of the
        task's and the project's last update.


        An invoice is listed when it was deleted. A voided invoice is not
        deleted: it is still returned by `GET /v1/invoices`.


        A record with no recorded last update has no deletion time and is not
        listed.


        Each type needs read access on its own scope: clients `Clients`,
        contacts `Contacts`, contracts, items and invoices `Billing`, tickets
        `Tickets`, custom assets `Assets`, projects and tasks `Project`. Asking
        for a type the key cannot read is a 403 with code `070208` on `TypeIds`.
      operationId: get_v1_deletions
      parameters:
        - name: TypeIds
          in: query
          description: >-
            Required. Comma-separated record types to include: 1 Client, 2
            Contact, 3 Contract, 4 Ticket, 5 Item, 6 Invoice, 7 Custom asset, 8
            Project, 9 Task, 10 Agent asset. Up to 10 values; any other value is
            a 400.
          schema:
            type: string
        - name: Since
          in: query
          description: ISO-8601 UTC timestamp; keeps only deletions at or after it.
          schema:
            type: string
            format: date-time
        - name: Cursor
          in: query
          description: >-
            Opaque pagination cursor from a previous page; omit for the first
            page.
          schema:
            type: string
        - name: PageSize
          in: query
          description: >-
            Number of items per page, 1-200 (default 50). Out of range is
            rejected, not clamped.
          schema:
            type: integer
            format: int32
            default: 50
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/DeletionResponseListBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/DeletionResponseListBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/DeletionResponseListBaseResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '403':
          description: Forbidden
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
components:
  schemas:
    DeletionResponseListBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          type: array
          items:
            $ref: '#/components/schemas/DeletionResponse'
          nullable: true
        DataContext:
          $ref: '#/components/schemas/PaginationDataContext'
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    ObjectBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          nullable: true
        DataContext:
          $ref: '#/components/schemas/ErrorDataContext'
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    HttpStatusCode:
      enum:
        - 100
        - 101
        - 102
        - 103
        - 200
        - 201
        - 202
        - 203
        - 204
        - 205
        - 206
        - 207
        - 208
        - 226
        - 300
        - 301
        - 302
        - 303
        - 304
        - 305
        - 306
        - 307
        - 308
        - 400
        - 401
        - 402
        - 403
        - 404
        - 405
        - 406
        - 407
        - 408
        - 409
        - 410
        - 411
        - 412
        - 413
        - 414
        - 415
        - 416
        - 417
        - 421
        - 422
        - 423
        - 424
        - 426
        - 428
        - 429
        - 431
        - 451
        - 500
        - 501
        - 502
        - 503
        - 504
        - 505
        - 506
        - 507
        - 508
        - 510
        - 511
      type: integer
      format: int32
    DeletionResponse:
      type: object
      properties:
        Type:
          $ref: '#/components/schemas/CodeModel'
        Id:
          type: string
          description: "The deleted record's id, as a string, in the form that record type's own endpoints take: a\r\nnumber for clients, contacts and contracts, a GUID for tickets, items, invoices, custom\r\nassets, projects and tasks. Read it with `Type` to know which record it names."
          example: '1042'
        DeletedOn:
          type: string
          description: "When the record was deleted (UTC). This is the record's last update, so it moves if the\r\ndeleted record is edited later."
          format: date-time
      additionalProperties: false
      description: >-
        A record that has been deleted: which kind of record, its id, and when
        it was deleted.
    PaginationDataContext:
      type: object
      properties:
        Pagination:
          $ref: '#/components/schemas/PaginatedResponse'
      additionalProperties: false
      description: "The `DataContext` of a cursor-paginated success response: carries the paging metadata\r\nfor the returned page."
    Error:
      type: object
      properties:
        Code:
          pattern: ^[0-9]{6}$
          type: string
          description: 6-digit MMTTNN error code. See the Public API error-code registry.
          example: '070101'
        Message:
          type: string
        PropertyName:
          type: string
          nullable: true
        ActionHint:
          type: string
          nullable: true
        DocUrl:
          type: string
          nullable: true
      additionalProperties: false
    ErrorDataContext:
      type: object
      properties:
        TraceId:
          type: string
          description: Request correlation id. Quote this when reporting a problem.
          nullable: true
      additionalProperties: false
      description: "The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest."
    CodeModel:
      type: object
      properties:
        Id:
          type: integer
          description: >-
            Numeric identifier of the coded value (e.g. status, priority, type,
            or source id).
          format: int64
          example: 1
        Name:
          type: string
          description: Display name of the coded value.
      additionalProperties: false
      description: >-
        A coded value, such as a status, priority, type or source, as an id and
        a display name.
    PaginatedResponse:
      type: object
      properties:
        NextCursor:
          type: string
          nullable: true
        PreviousCursor:
          type: string
          nullable: true
        HasMore:
          type: boolean
        HasPrevious:
          type: boolean
        TotalCount:
          type: integer
          format: int32
      additionalProperties: false
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: >-
        Your Gorelo API key. See [Generate API key](/generate-api-key). If your
        data is hosted in Australia, click the base URL at the top of this page
        and select `https://api.aue.gorelo.io`.
      name: X-API-Key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.