National Association of REALTORS · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the REALTORS M1 Gateway External API

6 actions 6 updates documentation extends openapi/nar-m1-gateway-external-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for National Association of REALTORS's API. It is a proposal applied on top of the contract, not a document National Association of REALTORS publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

descriptioncontactx-apievangelist-rating-artifactshostschemesx-credential-issuance400401

Targets 6

$.info
$
$.securityDefinitions.basic
$.paths.*.*.responses
$.paths['/ext/Member'].patch
$.paths['/ext/Member/Search'].post

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the REALTORS M1 Gateway External API
  version: 1.0.0
extends: openapi/nar-m1-gateway-external-openapi.json
x-apievangelist:
  generated: '2026-07-26'
  method: generated
  source: >-
    Derived from NAR's published Swagger 2.0 document plus the response-code table, PATCH rules and
    endpoint descriptions NAR publishes inside its own Postman collection, and from live probes of
    https://nar.m1gateway.realtor.
  rationale: >-
    NAR's published definition declares no host, no basePath, no schemes, no operationIds, no summaries and
    only 200 responses. This overlay records the missing contract facts we verified - the production host
    from NAR's own Postman baseUrl variable, the error table NAR publishes in prose, and the live
    rate-limit headers - without mutating the harvested original.
actions:
  - target: $.info
    update:
      description: >-
        The external (/ext/) surface of NAR's REALTORS M1 Gateway, the members-first engagement system
        replacing NRDS as the single source of truth for REALTOR member data across state and local
        associations. Access is partner-only: NAR issues environment-specific HTTP Basic credentials to
        external association management system vendors and NAR partners. All PATCH operations use a
        test/replace JSON Patch pattern in which the test value must match the currently stored value.
      contact:
        name: NAR M1 partner support
        email: poesupport@nar.realtor
        url: https://www.nar.realtor/ae/manage-your-association/realtors-m1-members-first-engagement-system
      x-apievangelist-rating-artifacts:
        conventions: conventions/nar-conventions.yml
        errors: errors/nar-error-codes.yml
        data_model: data-model/nar-data-model.yml
        rate_limits: rate-limits/nar-rate-limits.yml
  - target: $
    description: >-
      The published document declares no host, basePath or schemes. The production base URL is the baseUrl
      variable in NAR's own Postman collection, confirmed live (301 to nar.m1gateway.realtor, then 401).
    update:
      host: m1gateway.realtor
      schemes:
        - https
  - target: $.securityDefinitions.basic
    update:
      x-credential-issuance: >-
        Issued directly by NAR to external AMS vendors and partners, separately for test and production.
        There is no self-serve sign-up.
  - target: $.paths.*.*.responses
    description: >-
      NAR publishes this response-code table in the description of its Postman collection but declares none
      of these responses in the machine-readable document. Added here so generated clients can handle them.
    update:
      '400':
        description: >-
          Bad request - missing or invalid fields. Inspect FieldValidationErrors in the body. On PATCH, a
          test value that does not match the stored value fails here.
      '401':
        description: Not authorized for this service - HTTP Basic credentials missing, malformed or not entitled.
      '403':
        description: >-
          Authorized but not permitted for this specific record, for example the caller's association has
          no permission over the requested member or office.
      '404':
        description: Record not found.
      '500':
        description: Server error.
  - target: $.paths['/ext/Member'].patch
    update:
      x-patch-pattern: >-
        GET the current record first, then send an Updates array of JSON Patch test + replace pairs. The
        test value must match the current database value exactly, and null must not be substituted for an
        empty string.
      x-idempotency: >-
        No idempotency key. The test precondition makes a replayed PATCH fail rather than double-apply;
        POST creates have no such guard - call GET /ext/Member/CheckDuplicateMember/{memberId} and
        POST /ext/Member/CheckDuplicateEmail before creating.
  - target: $.paths['/ext/Member/Search'].post
    update:
      x-search-constraints: >-
        At least one search field is required, and name fields (FirstName, LastName) cannot be the only
        criteria supplied.