Codat Custom data type API

Configure and pull additional data types that are not included in Codat's standardized data model.

OpenAPI Specification

codat-custom-data-type-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bank Feeds Account mapping Custom data type API
  version: 3.0.0
  contact:
    email: support@codat.io
    name: Codat
  description: 'Bank Feeds solution enables your SMB users to set up bank feeds from accounts in your application to supported accounting software.


    A bank feed is a connection between a source bank account in your application and a target bank account in a supported accounting software.


    [Explore solution](https://docs.codat.io/bank-feeds-api/overview) | [See OpenAPI spec](https://github.com/codatio/oas)


    ---

    <!-- Start Codat Tags Table -->

    ## Endpoints


    | Endpoints | Description |

    | :- |:- |

    | Companies | Create and manage your SMB users'' companies. |

    | Connections | Create new and manage existing data connections for a company. |

    | Source accounts | Provide and manage lists of source bank accounts. |

    | Account mapping | Extra functionality for building an account management UI. |

    | Company information | Get detailed information about a company from the underlying platform. |

    | Transactions | Create new bank account transactions for a company''s connections, and see previous operations. |

    <!-- End Codat Tags Table -->'
  termsOfService: https://www.codat.io/legals/
servers:
- description: Production
  url: https://api.codat.io
security:
- auth_header: []
tags:
- name: Custom data type
  description: Configure and pull additional data types that are not included in Codat's standardized data model.
paths:
  /integrations/{platformKey}/dataTypes/custom/{customDataIdentifier}:
    parameters:
    - $ref: '#/components/parameters/platformKey'
    - $ref: '#/components/parameters/customDataIdentifier'
    put:
      summary: Configure custom data type
      description: "The *Configure custom data type* endpoint allows you to maintain or change the configuration required to return a custom data type for a specific integration. \n\nA [custom data type](https://docs.codat.io/using-the-api/custom-data) is an additional data type you can create that is not included in Codat's standardized data model.\n\n### Tips and traps\n\n- You can only configure a single custom data type for a single platform at a time. Use the endpoint multiple times if you need to configure it for multiple platforms. \n\n- You can only indicate a single data source for each customer data type. \n\n- Make your custom configuration as similar as possible to our standard data types so you can interact with them in exactly the same way."
      operationId: configure-custom-data-type
      x-speakeasy-name-override: configure
      tags:
      - Custom data type
      requestBody:
        description: Custom data type configuration for the specified platform.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomDataTypeConfiguration'
            examples:
              Dynamics 365 Business Central:
                value:
                  dataSource: api/purchaseOrders
                  requiredData:
                    currency: $[*].currencyCode
                    number: $[*].number
                    date: $[*].orderDate
                    totalexvat: $[*].totalAmountExcludingTax
                    totaltax: $[*].totalTaxAmount
                    vendor: $[*].number
                  keyBy:
                  - $[*].id
                  sourceModifiedDate:
                  - $[*].lastModifiedDateTime
              Xero Simple Record:
                value:
                  dataSource: /api.xro/2.0/Accounts
                  requiredData:
                    code: $.Code
                    accountId: $.AccountID
                    type: $.Type
                    SysAcc: $.SystemAccount
                  keyBy:
                  - $.AccountID
              Xero Mapping Arrays:
                value:
                  dataSource: /api.xro/2.0/Invoices
                  requiredData:
                    invNumber: $.InvoiceNumber
                    type: $.Type
                    InvoiceID: $.InvoiceID
                    lines: $.LineItems[*]
                  keyBy:
                  - $.InvoiceID
                  sourceModifiedDate:
                  - $.UpdatedDateUTC
              QuickBooks Online:
                value:
                  dataSource: /query?query=select * from Account
                  requiredData:
                    id: $.Id
                    Currentbal: $.CurrentBalance
                    SubAcc: $.SubAccount
                  keyBy:
                  - $.Id
                  sourceModifiedDate:
                  - $.time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDataTypeConfiguration'
              examples:
                Dynamics 365 Business Central:
                  value:
                    dataSource: api/purchaseOrders
                    requiredData:
                      currency: $[*].currencyCode
                      number: $[*].number
                      date: $[*].orderDate
                      totalexvat: $[*].totalAmountExcludingTax
                      totaltax: $[*].totalTaxAmount
                      vendor: $[*].number
                    keyBy:
                    - $[*].id
                    sourceModifiedDate:
                    - $[*].lastModifiedDateTime
                Xero Simple Record:
                  value:
                    dataSource: /api.xro/2.0/Accounts
                    requiredData:
                      code: $.Code
                      accountId: $.AccountID
                      type: $.Type
                      SysAcc: $.SystemAccount
                    keyBy:
                    - $.AccountID
                Xero Mapping Arrays:
                  value:
                    dataSource: /api.xro/2.0/Invoices
                    requiredData:
                      invNumber: $.InvoiceNumber
                      type: $.Type
                      InvoiceID: $.InvoiceID
                      lines: $.LineItems[*]
                    keyBy:
                    - $.InvoiceID
                    sourceModifiedDate:
                    - $.UpdatedDateUTC
                QuickBooks Online:
                  value:
                    dataSource: /query?query=select * from Account
                    requiredData:
                      id: $.Id
                      Currentbal: $.CurrentBalance
                      SubAcc: $.SubAccount
                    keyBy:
                    - $.Id
                    sourceModifiedDate:
                    - $.time
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
    get:
      summary: Get custom data configuration
      description: 'The *Get custom data configuration* endpoint returns existing configuration details for the specified custom data type and integration pair you previously configured.


        A [custom data type](https://docs.codat.io/using-the-api/custom-data) is an additional data type you can create that is not included in Codat''s standardized data model.'
      operationId: get-custom-data-type-configuration
      x-speakeasy-name-override: get-configuration
      tags:
      - Custom data type
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDataTypeRecords'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
  /companies/{companyId}/connections/{connectionId}/data/queue/custom/{customDataIdentifier}:
    parameters:
    - $ref: '#/components/parameters/companyId'
    - $ref: '#/components/parameters/connectionId'
    - $ref: '#/components/parameters/customDataIdentifier'
    post:
      summary: Refresh custom data type
      description: The *Refresh custom data type* endpoint refreshes the specified custom data type for a given company. This is an asynchronous operation that will sync updated data from the linked integration into Codat for you to view.
      operationId: refresh-custom-data-type
      x-speakeasy-name-override: refresh
      tags:
      - Custom data type
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullOperation'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '451':
          $ref: '#/components/responses/Legal-Reasons'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
  /companies/{companyId}/connections/{connectionId}/data/custom/{customDataIdentifier}:
    parameters:
    - $ref: '#/components/parameters/companyId'
    - $ref: '#/components/parameters/connectionId'
    - $ref: '#/components/parameters/customDataIdentifier'
    get:
      summary: List custom data type records
      description: 'The *List custom data type records* endpoint returns a paginated list of records pulled for the specified custom data type you previously configured.


        A [custom data type](https://docs.codat.io/using-the-api/custom-data) is an additional data type you can create that is not included in Codat''s standardized data model.s endpoint returns a paginated list of records whose schema is defined [Configure custom data type](https://docs.codat.io/platform-api#/operations/configure-custom-data-type)'
      operationId: list-custom-data-type-records
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/pageSize'
      tags:
      - Custom data type
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomDataTypeRecords'
        '400':
          $ref: '#/components/responses/Bad-Request'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/Payment-Required'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/Not-Found'
        '429':
          $ref: '#/components/responses/Too-Many-Requests'
        '451':
          $ref: '#/components/responses/Legal-Reasons'
        '500':
          $ref: '#/components/responses/Internal-Server-Error'
        '503':
          $ref: '#/components/responses/Service-Unavailable'
components:
  schemas:
    CustomDataTypeConfiguration:
      title: Custom data type configuration
      type: object
      description: Client's configuration details for a specific custom data type and platform pair.
      properties:
        dataSource:
          type: string
          description: Underlying endpoint of the source platform that will serve as a data source for the custom data type. This value is not validated by Codat.
        requiredData:
          type: object
          description: Properties required to be fetched from the underlying platform for the custom data type that is being configured. This value is not validated by Codat.
          additionalProperties:
            type: string
            description: The client's defined name for the property with the value being the source system's property name which the mapping is targeting.
        keyBy:
          type: array
          description: An array of properties from the source system that can be used to uniquely identify the records returned for the custom data type. This value is not validated by Codat.
          items:
            type: string
          minLength: 1
        sourceModifiedDate:
          type: array
          nullable: true
          items:
            type: string
          description: Property in the source platform nominated by the client that defines the date when a record was last modified there. This value is not validated by Codat.
      examples:
      - dataSource: api/purchaseOrders?$filter=currencyCode eq 'NOK'
        requiredData:
          currencyCode: $[*].currencyCode
          id: $[*].id
          number: $[*].number
          orderDate: $[*].orderDate
          totalAmountExcludingTax: $[*].totalAmountExcludingTax
          totalTaxAmount: $[*].totalTaxAmount
          vendorName: $[*].number
        keyBy:
        - $[*].id
        sourceModifiedDate:
        - $[*].lastModifiedDateTime
    DateTime:
      title: Date time
      type: string
      examples:
      - '2022-10-23T00:00:00Z'
      - '2022-10-23'
      description: "In Codat's data model, dates and times are represented using the <a class=\"external\" href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601 standard</a>. Date and time fields are formatted as strings; for example:\n\n```\n2020-10-08T22:40:50Z\n2021-01-01T00:00:00\n```\n\n\n\nWhen syncing data that contains `DateTime` fields from Codat, make sure you support the following cases when reading time information:\n\n- Coordinated Universal Time (UTC): `2021-11-15T06:00:00Z`\n- Unqualified local time: `2021-11-15T01:00:00`\n- UTC time offsets: `2021-11-15T01:00:00-05:00`\n\n> Time zones\n> \n> Not all dates from Codat will contain information about time zones.  \n> Where it is not available from the underlying platform, Codat will return these as times local to the business whose data has been synced."
    CustomDataTypeRecords:
      title: Custom data type records
      type: object
      description: Resulting records pulled from the source platform for a specific custom data type.
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/CustomDataTypeRecords/definitions/customDataTypeRecord'
        pageNumber:
          $ref: '#/components/schemas/PagingInfo/properties/pageNumber'
        pageSize:
          $ref: '#/components/schemas/PagingInfo/properties/pageSize'
        totalResults:
          $ref: '#/components/schemas/PagingInfo/properties/totalResults'
      definitions:
        customDataTypeRecord:
          title: Custom data type record
          type: object
          properties:
            id:
              type: string
              nullable: false
              description: Unique identifier of the record.
            content:
              type: object
              description: Values from the source system for the properties defined in the custom data type configuration.
              additionalProperties:
                type: object
            modifiedDate:
              title: ModifiedDate
              x-internal: true
              type: object
              properties:
                modifiedDate:
                  allOf:
                  - $ref: '#/components/schemas/DateTime'
                  - description: 'The date when the record was last fetched from the accounting software, commerce software, or open banking provider and updated in Codat’s data cache.


                      Use it to identify and retrieve records that have changed since your last fetch. For example, filtering `modifiedDate` to today will provide new records updated in Codat today.


                      This date is populated for all data types except for attachments, balance sheets, company information, and profit & loss reports ([read more](https://docs.codat.io/using-the-api/modified-dates#modified-date)).


                      In Codat''s data model, dates and times are represented using the <a class="external" href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601 standard</a>.'
    PagingInfo:
      type: object
      title: Pagination information
      x-internal: true
      properties:
        pageNumber:
          type: integer
          description: Current page number.
        pageSize:
          type: integer
          description: Number of items to return in results array.
          maximum: 2000
        totalResults:
          type: integer
          description: Total number of items.
        _links:
          $ref: '#/components/schemas/PagingInfo/definitions/links'
      definitions:
        links:
          title: Hal Links
          type: object
          required:
          - self
          - current
          properties:
            self:
              $ref: '#/components/schemas/PagingInfo/definitions/halRef'
            current:
              $ref: '#/components/schemas/PagingInfo/definitions/halRef'
            next:
              $ref: '#/components/schemas/PagingInfo/definitions/halRef'
            previous:
              $ref: '#/components/schemas/PagingInfo/definitions/halRef'
          examples:
          - self:
              href: /companies
            current:
              href: /companies?page=1&pageSize=10
        halRef:
          title: Hypertext reference
          type: object
          properties:
            href:
              type: string
              format: uri-reference
              description: Uri hypertext reference.
      required:
      - pageNumber
      - pageSize
      - totalResults
      - _links
      examples:
      - pageNumber: 1
        pageSize: 10
        totalResults: 1
        _links:
          self:
            href: /companies/{id}/data/{dataType}
          current:
            href: /companies/{id}/data/{dataType}?page=1&pageSize=10
    ErrorMessage:
      title: Error message
      type: object
      x-internal: true
      properties:
        statusCode:
          type: integer
          description: The HTTP status code returned by the error.
        service:
          type: string
          description: Codat's service the returned the error.
        error:
          type: string
          description: A brief description of the error.
        correlationId:
          type: string
          description: Unique identifier used to propagate to all downstream services and determine the source of the error.
        validation:
          $ref: '#/components/schemas/ErrorMessage/definitions/errorValidation'
        canBeRetried:
          type: string
          description: '`True` if the error occurred transiently and can be retried.'
        detailedErrorCode:
          type: integer
          description: Machine readable error code used to automate processes based on the code returned.
      definitions:
        errorValidation:
          title: Validation error
          type: object
          nullable: true
          description: A human-readable object describing validation decisions Codat has made. If an operation has failed because of validation errors, they will be detailed here.
          properties:
            errors:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/ErrorMessage/definitions/errorValidationItem'
            warnings:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/ErrorMessage/definitions/errorValidationItem'
        errorValidationItem:
          title: Validation error item
          type: object
          properties:
            itemId:
              type: string
              nullable: true
              description: Unique identifier for a validation item.
            message:
              type: string
              nullable: true
              description: A message outlining validation item's issue.
            validatorName:
              type: string
              nullable: true
              description: Name of validator.
    PullOperation:
      title: Pull operation
      description: 'Information about a queued, in progress or completed pull operation.

        *Formally called `dataset`*'
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier of the pull operation.
          example: 943accd0-4247-42d8-865b-363c8629e1da
        companyId:
          type: string
          format: uuid
          description: Unique identifier of the company associated to this pull operation.
          example: 22ece347-e5f6-4896-95e0-35a4c7f17023
        connectionId:
          type: string
          format: uuid
          description: Unique identifier of the connection associated to this pull operation.
          example: 50830828-7d39-4367-b0eb-5ddb2de5faa5
        dataType:
          title: Data types
          x-internal: true
          type: string
          description: The data type you are requesting in a pull operation.
        status:
          title: Dataset status
          type: string
          description: The current status of the dataset.
          enum:
          - Initial
          - Queued
          - Fetching
          - MapQueued
          - Mapping
          - Complete
          - FetchError
          - MapError
          - InternalError
          - ProcessingQueued
          - Processing
          - ProcessingError
          - ValidationQueued
          - Validating
          - ValidationError
          - AuthError
          - Cancelled
          - NotSupported
          - RateLimitError
          - PermissionsError
          - PrerequisiteNotMet
        statusDescription:
          type: string
          nullable: true
          description: Additional information about the dataset status.
          example: Paused until 2022-10-23T00:00:00.000Z
        errorMessage:
          type: string
          nullable: true
          description: A message about a transient or persistent error returned by Codat or the source platform.
        requested:
          $ref: '#/components/schemas/DateTime'
        completed:
          $ref: '#/components/schemas/DateTime'
        progress:
          type: integer
          description: An integer signifying the progress of the pull operation.
        isCompleted:
          type: boolean
          description: '`True` if the pull operation is completed successfully. The `isCompleted` property is not queryable. To filter failed pull operations, query by `status!=Complete&&status!=NotSupported` instead.'
        isErrored:
          type: boolean
          description: '`True` if the pull operation entered an error state.'
      required:
      - id
      - companyId
      - connectionId
      - dataType
      - status
      - requested
      - progress
      - isCompleted
      - isErrored
      examples:
      - id: 97d60846-f07a-4d42-b5a0-0bdcc6ebf56b
        companyId: 4645bd78-8988-45bc-ac9e-67ba5df6e4e5
        connectionId: 51baa045-4836-4317-a42e-3542e991e581
        dataType: invoices
        status: Initial
        statusDescription: Paused until 2022-10-23T00:00:00.000Z
        requested: '2022-11-14T11:18:37.2798351Z'
        progress: 10
        isCompleted: false
        isErrored: false
  parameters:
    connectionId:
      name: connectionId
      in: path
      required: true
      schema:
        type: string
        format: uuid
        example: 2e9d2c44-f675-40ba-8049-353bfcb5e171
        description: Unique identifier for a company's data connection.
      description: Unique identifier for a connection.
    pageSize:
      name: pageSize
      in: query
      schema:
        type: integer
        format: int32
        default: 100
        example: 100
        minimum: 1
        maximum: 5000
      description: Number of records to return in a page. [Read more](https://docs.codat.io/using-the-api/paging).
    customDataIdentifier:
      name: customDataIdentifier
      in: path
      required: true
      schema:
        type: string
        example: DynamicsPurchaseOrders
      description: Unique identifier for a custom data type.
    companyId:
      name: companyId
      in: path
      required: true
      schema:
        $ref: '#/paths/~1companies~1%7BcompanyId%7D~1syncSettings/post/requestBody/content/application~1json/schema/allOf/0/properties/companyId'
      description: Unique identifier for a company.
    platformKey:
      name: platformKey
      in: path
      required: true
      schema:
        type: string
        minLength: 4
        maxLength: 4
        pattern: '[a-z]{4}'
        example: gbol
        description: A unique 4-letter key to represent a platform in each integration. View [accounting](https://docs.codat.io/integrations/accounting/overview#platform-keys), [banking](https://docs.codat.io/integrations/banking/overview#platform-keys), and [commerce](https://docs.codat.io/integrations/commerce/overview#platform-keys) platform keys.
      description: A unique 4-letter key to represent a platform in each integration.
    page:
      name: page
      in: query
      schema:
        type: integer
        format: int32
        minimum: 1
        example: 1
        default: 1
      description: Page number. [Read more](https://docs.codat.io/using-the-api/paging).
  responses:
    Unauthorized:
      description: Your API request was not properly authorized.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            Unauthorized:
              value:
                statusCode: 401
                service: PublicApi
                error: Unauthorized
                correlationId: 7eb40d6b415d7bcd99ce658268284056
                canBeRetried: Unknown
                detailedErrorCode: 0
    Bad-Request:
      description: The request made is not valid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            Malformed query:
              value:
                statusCode: 400
                service: PublicApi
                error: Error processing request - not valid.
                correlationId: bc997528a9d7abb9161ef45f05d38599
                canBeRetried: Unknown
                detailedErrorCode: 0
    Payment-Required:
      description: 'An account limit has been exceeded. The type of limit is described in the error property:


        - You have exceeded the 50-company limit that applies to a Free plan. Delete any companies you no longer need and retry the request.

        - The requested sync schedule is not allowed. You requested an hourly sync schedule but this functionality is not included in the Free plan.

        - Your Free account is older than 365 days and has expired. Contact support@codat.io.

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            Conflict:
              value:
                statusCode: 429
                service: PublicApi
                error: You have exceeded the 50-company limit that applies to a Free plan. We recommend that you delete any companies you no longer need and retry the request.
                correlationId: bc997528a9d7abb9161ef45f05d38599
                canBeRetried: Unknown
                detailedErrorCode: 0
    Too-Many-Requests:
      description: Too many requests were made in a given amount of time. Wait a short period and then try again.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            Conflict:
              value:
                statusCode: 429
                service: PublicApi
                error: You have made too many requests in a given amount of time; please retry later.
                correlationId: bc997528a9d7abb9161ef45f05d38599
                canBeRetried: Unknown
                detailedErrorCode: 0
    Legal-Reasons:
      description: Not currently available due to compliance limitations. Reach out to your Codat contact for further assistance.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            Conflict:
              value:
                statusCode: 451
                service: StdznCustomData
                error: Platform 'qudb' is not currently available for compliance purposes.
                correlationId: f63017dabb9b87865573bea95a51e55d
                canBeRetried: Unknown
                detailedErrorCode: 0
    Not-Found:
      description: 'One or more of the resources you referenced could not be found.

        This might be because your company or data connection id is wrong, or was already deleted.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            Data connection not found:
              value:
                statusCode: 404
                service: PublicApi
                error: Data connection a22dd66b-564a-4832-9b37-7b3ce4aeb7de not found
                correlationId: 8fa2b5f4794970a4ee73758f612e8df0
                canBeRetried: Unknown
                detailedErrorCode: 0
            Company not found:
              value:
                statusCode: 404
                service: ClientsApi
                error: No company was found with ID 846ed55c-974b-4392-a1f1-87b6fdbf3c5e
                correlationId: 0a40c2f31fc8f992fb88b0853e4166f3
                canBeRetried: Unknown
                detailedErrorCode: 0
            No data available:
              value:
                statusCode: 404
                service: PublicApi
                error: No data available for accounts for ID e5889b459f544926ac5b8e6756df2s
                correlationId: 0a40c2f31fc8f992fb88b0853e4166f3
                canBeRetried: Unknown
                detailedErrorCode: 0
    Internal-Server-Error:
      description: There is a problem with our server. Please try again later.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            Conflict:
              value:
                statusCode: 500
                service: PublicApi
                error: There is a problem with our server. Please try again later.
                correlationId: bc997528a9d7abb9161ef45f05d38599
                canBeRetried: Unknown
                detailedErrorCode: 0
    Forbidden:
      description: You are using an outdated API key or a key not associated with that resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            Conflict:
              value:
                statusCode: 403
                service: PublicApi
                error: You are using an outdated API key or a key not associated with that resource.
                correlationId: bc997528a9d7abb9161ef45f05d38599
                canBeRetried: Unknown
                detailedErrorCode: 0
    Service-Unavailable:
      description: The Codat API is temporarily offline for maintenance. Please try again later.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
          examples:
            Conflict:
              value:
                statusCode: 500
                service: PublicApi
                error: The Codat API is temporarily offline for maintenance. Please try again later.
                correlationId: bc997528a9d7abb9161ef45f05d38599
                canBeRetried: Unknown
                detailedErrorCode: 0
  securitySch

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/codat/refs/heads/main/openapi/codat-custom-data-type-api-openapi.yml