{
  "components": {
    "schemas": {
      "ContactListPage": {
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ContactListSummary"
            },
            "title": "Items",
            "type": "array"
          },
          "limit": {
            "title": "Limit",
            "type": "integer"
          },
          "offset": {
            "title": "Offset",
            "type": "integer"
          }
        },
        "required": [
          "items",
          "count",
          "limit",
          "offset"
        ],
        "title": "ContactListPage",
        "type": "object"
      },
      "ContactListStatusResponse": {
        "properties": {
          "auto_mapped": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Mapped"
          },
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ErrorInfo"
              },
              {
                "type": "null"
              }
            ]
          },
          "failed_rows_csv_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failed Rows Csv Url"
          },
          "field_mappings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Field Mappings"
          },
          "filename": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Filename"
          },
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "idempotency_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Idempotency Key"
          },
          "list_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "List Name"
          },
          "organization_id": {
            "title": "Organization Id",
            "type": "integer"
          },
          "outreach_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Outreach Id"
          },
          "poll_after_seconds": {
            "default": 5,
            "title": "Poll After Seconds",
            "type": "integer"
          },
          "queue_position": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Queue Position"
          },
          "rows": {
            "$ref": "#/components/schemas/RowCounts"
          },
          "source": {
            "$ref": "#/components/schemas/SourceInfo"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "status_url": {
            "title": "Status Url",
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "rows",
          "status_url",
          "organization_id"
        ],
        "title": "ContactListStatusResponse",
        "type": "object"
      },
      "ContactListSummary": {
        "properties": {
          "completed_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ErrorInfo"
              },
              {
                "type": "null"
              }
            ]
          },
          "filename": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Filename"
          },
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "idempotency_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Idempotency Key"
          },
          "list_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "List Name"
          },
          "outreach_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Outreach Id"
          },
          "queue_position": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Queue Position"
          },
          "rows": {
            "$ref": "#/components/schemas/RowCounts"
          },
          "started_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "status_url": {
            "title": "Status Url",
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "rows",
          "status_url"
        ],
        "title": "ContactListSummary",
        "type": "object"
      },
      "CreateContactListRequest": {
        "additionalProperties": false,
        "description": "POST /api/partner/v1/contact-lists.",
        "properties": {
          "enrichment": {
            "$ref": "#/components/schemas/EnrichmentIn"
          },
          "field_mappings": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Field Mappings"
          },
          "idempotency_key": {
            "pattern": "^[A-Za-z0-9._:-]{8,64}$",
            "title": "Idempotency Key",
            "type": "string"
          },
          "list_name": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "List Name"
          },
          "matching_key": {
            "default": "external_id",
            "title": "Matching Key",
            "type": "string"
          },
          "merge_strategy": {
            "default": "add_new_only",
            "title": "Merge Strategy",
            "type": "string"
          },
          "outreach_id": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Outreach Id"
          },
          "source": {
            "$ref": "#/components/schemas/SourceIn"
          }
        },
        "required": [
          "idempotency_key",
          "source"
        ],
        "title": "CreateContactListRequest",
        "type": "object"
      },
      "CreateContactListResponse": {
        "properties": {
          "created_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "idempotency_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Idempotency Key"
          },
          "list_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "List Name"
          },
          "organization_id": {
            "title": "Organization Id",
            "type": "integer"
          },
          "outreach_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Outreach Id"
          },
          "poll_after_seconds": {
            "default": 5,
            "title": "Poll After Seconds",
            "type": "integer"
          },
          "queue_position": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Queue Position"
          },
          "replayed": {
            "default": false,
            "title": "Replayed",
            "type": "boolean"
          },
          "source_url_expires_at": {
            "anyOf": [
              {
                "format": "date-time",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Url Expires At"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "status_url": {
            "title": "Status Url",
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "organization_id",
          "status_url"
        ],
        "title": "CreateContactListResponse",
        "type": "object"
      },
      "CustomFieldOut": {
        "description": "A custom field this organization already has.",
        "properties": {
          "key": {
            "title": "Key",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "name",
          "key",
          "type"
        ],
        "title": "CustomFieldOut",
        "type": "object"
      },
      "EnrichmentIn": {
        "additionalProperties": false,
        "description": "District/geo enrichment to run after the import lands.",
        "properties": {
          "enabled": {
            "default": false,
            "title": "Enabled",
            "type": "boolean"
          },
          "include_congressional": {
            "default": true,
            "title": "Include Congressional",
            "type": "boolean"
          },
          "include_state_leg": {
            "default": true,
            "title": "Include State Leg",
            "type": "boolean"
          },
          "zip_district_fallback": {
            "default": false,
            "title": "Zip District Fallback",
            "type": "boolean"
          }
        },
        "title": "EnrichmentIn",
        "type": "object"
      },
      "ErrorEnvelope": {
        "description": "Every 4xx and 5xx this API returns has exactly this shape.",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ErrorObject"
          }
        },
        "required": [
          "error"
        ],
        "title": "ErrorEnvelope",
        "type": "object"
      },
      "ErrorInfo": {
        "properties": {
          "code": {
            "title": "Code",
            "type": "string"
          },
          "message": {
            "title": "Message",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message"
        ],
        "title": "ErrorInfo",
        "type": "object"
      },
      "ErrorObject": {
        "properties": {
          "code": {
            "description": "Stable machine-readable code. Branch on this; the message wording may change without notice.",
            "examples": [
              "invalid_request"
            ],
            "type": "string"
          },
          "details": {
            "additionalProperties": true,
            "description": "Structured context when there is any — e.g. the list of rejected fields on a 422. Null otherwise.",
            "type": [
              "object",
              "null"
            ]
          },
          "message": {
            "description": "Human-readable explanation of the failure.",
            "type": "string"
          },
          "request_id": {
            "description": "Correlation id, also returned as the X-Request-Id header. Quote it when contacting support.",
            "type": "string"
          }
        },
        "required": [
          "code",
          "message",
          "request_id"
        ],
        "title": "ErrorObject",
        "type": "object"
      },
      "FieldSchemaResponse": {
        "properties": {
          "aliases": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Aliases",
            "type": "object"
          },
          "custom_fields": {
            "items": {
              "$ref": "#/components/schemas/CustomFieldOut"
            },
            "title": "Custom Fields",
            "type": "array"
          },
          "limits": {
            "additionalProperties": {
              "type": "integer"
            },
            "title": "Limits",
            "type": "object"
          },
          "matching_keys": {
            "items": {
              "$ref": "#/components/schemas/NamedOptionOut"
            },
            "title": "Matching Keys",
            "type": "array"
          },
          "merge_strategies": {
            "items": {
              "$ref": "#/components/schemas/NamedOptionOut"
            },
            "title": "Merge Strategies",
            "type": "array"
          },
          "special_targets": {
            "items": {
              "$ref": "#/components/schemas/FieldTargetOut"
            },
            "title": "Special Targets",
            "type": "array"
          },
          "targets": {
            "items": {
              "$ref": "#/components/schemas/FieldTargetOut"
            },
            "title": "Targets",
            "type": "array"
          }
        },
        "required": [
          "targets",
          "special_targets",
          "custom_fields",
          "aliases",
          "matching_keys",
          "merge_strategies",
          "limits"
        ],
        "title": "FieldSchemaResponse",
        "type": "object"
      },
      "FieldTargetOut": {
        "properties": {
          "description": {
            "title": "Description",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "name",
          "description"
        ],
        "title": "FieldTargetOut",
        "type": "object"
      },
      "NamedOptionOut": {
        "properties": {
          "description": {
            "title": "Description",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "name",
          "description"
        ],
        "title": "NamedOptionOut",
        "type": "object"
      },
      "RowCounts": {
        "description": "`total` is null until the fetch completes — the DB column is a non-null int that starts at 0, and reporting \"0 rows\" for a file we have not read yet would be a lie a client could act on.",
        "properties": {
          "created": {
            "default": 0,
            "title": "Created",
            "type": "integer"
          },
          "failed": {
            "default": 0,
            "title": "Failed",
            "type": "integer"
          },
          "processed": {
            "default": 0,
            "title": "Processed",
            "type": "integer"
          },
          "skipped": {
            "default": 0,
            "title": "Skipped",
            "type": "integer"
          },
          "suppressed": {
            "default": 0,
            "title": "Suppressed",
            "type": "integer"
          },
          "total": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total"
          },
          "updated": {
            "default": 0,
            "title": "Updated",
            "type": "integer"
          }
        },
        "title": "RowCounts",
        "type": "object"
      },
      "SourceIn": {
        "additionalProperties": false,
        "description": "Where to fetch the CSV from. One type today.",
        "properties": {
          "type": {
            "default": "s3_presigned_url",
            "title": "Type",
            "type": "string"
          },
          "url": {
            "maxLength": 8192,
            "minLength": 16,
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "SourceIn",
        "type": "object"
      },
      "SourceInfo": {
        "description": "Host + key ONLY. The query string is a live S3 credential.",
        "properties": {
          "bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bytes"
          },
          "encoding": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Encoding"
          },
          "host": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Host"
          },
          "key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Key"
          }
        },
        "title": "SourceInfo",
        "type": "object"
      },
      "WhoAmIOrg": {
        "properties": {
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          }
        },
        "required": [
          "id"
        ],
        "title": "WhoAmIOrg",
        "type": "object"
      },
      "WhoAmIResponse": {
        "properties": {
          "limits": {
            "additionalProperties": {
              "type": "integer"
            },
            "title": "Limits",
            "type": "object"
          },
          "organization": {
            "$ref": "#/components/schemas/WhoAmIOrg"
          },
          "rate_limits": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Rate Limits",
            "type": "object"
          },
          "role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Role"
          },
          "scopes": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scopes"
          },
          "user": {
            "$ref": "#/components/schemas/WhoAmIUser"
          }
        },
        "required": [
          "organization",
          "user",
          "limits",
          "rate_limits"
        ],
        "title": "WhoAmIResponse",
        "type": "object"
      },
      "WhoAmIUser": {
        "properties": {
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "id": {
            "title": "Id",
            "type": "integer"
          }
        },
        "required": [
          "id"
        ],
        "title": "WhoAmIUser",
        "type": "object"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "bearerFormat": "mtk_live_…",
        "description": "Personal access token minted at app.getmeteoric.io → Settings → API keys",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "externalDocs": {
    "description": "Partner API guide",
    "url": "https://getmeteoric.io/docs/api/contact-lists"
  },
  "info": {
    "contact": {
      "email": "support@getmeteoric.io",
      "name": "Meteoric Support"
    },
    "description": "Bulk-load contact lists into a Meteoric organization from a CSV you host in your own S3 bucket.",
    "title": "Meteoric Partner API",
    "version": "1.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/partner/v1/contact-lists": {
      "get": {
        "description": "Newest first. Summary rows only — call the per-id endpoint for resolved mappings, source detail and the failed-rows download.",
        "operationId": "listContactLists",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactListPage"
                }
              }
            },
            "description": "A page of imports for this organization"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Missing, malformed, revoked or expired API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key is valid but lacks the required scope, or the organization is closed."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "limit or offset is out of range."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Rate limit exceeded for this API key. Retry after the window."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Internal error. Safe to retry; quote request_id if it persists."
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Recent contact-list imports for this organization",
        "tags": [
          "Contact Lists"
        ]
      },
      "post": {
        "description": "Queue a contact-list import. Returns 202 immediately; poll the `status_url` every `poll_after_seconds` for the verdict.",
        "operationId": "createContactList",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContactListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateContactListResponse"
                }
              }
            },
            "description": "Idempotent replay of an earlier request"
          },
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateContactListResponse"
                }
              }
            },
            "description": "Import accepted and queued",
            "headers": {
              "Location": {
                "description": "Absolute URL of the status resource for this import.",
                "schema": {
                  "format": "uri",
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The source URL is not a usable presigned S3 GET URL — unsigned, expired, or pointing somewhere we will not fetch."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Missing, malformed, revoked or expired API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key is valid but lacks the required scope, or the organization is closed."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "A referenced object does not exist in this organization (e.g. the outreach_id)."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The idempotency_key was already used with a different request body, or this organization's import queue is full (3 running and 10 waiting)."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The request body failed validation."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Rate limit exceeded for this API key. Retry after the window."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Internal error. Safe to retry; quote request_id if it persists."
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Create a bulk contact-list import from a presigned S3 CSV URL",
        "tags": [
          "Contact Lists"
        ]
      }
    },
    "/api/partner/v1/contact-lists/{job_id}": {
      "get": {
        "description": "Poll this every `poll_after_seconds` until `status` is `succeeded` or `failed`. Polling is the completion signal — there is no webhook.",
        "operationId": "getContactList",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "title": "Job Id",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactListStatusResponse"
                }
              }
            },
            "description": "Current status of the import"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Missing, malformed, revoked or expired API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key is valid but lacks the required scope, or the organization is closed."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "No import with this id in this organization."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Rate limit exceeded for this API key. Retry after the window."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Internal error. Safe to retry; quote request_id if it persists."
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Status of one contact-list import",
        "tags": [
          "Contact Lists"
        ]
      }
    },
    "/api/partner/v1/field-schema": {
      "get": {
        "description": "Everything you need to build a valid `field_mappings` object.",
        "operationId": "getFieldSchema",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FieldSchemaResponse"
                }
              }
            },
            "description": "The column targets and limits this organization accepts"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Missing, malformed, revoked or expired API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key is valid but lacks the required scope, or the organization is closed."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Rate limit exceeded for this API key. Retry after the window."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Internal error. Safe to retry; quote request_id if it persists."
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Field targets, header aliases, matching keys and merge strategies",
        "tags": [
          "Meta"
        ]
      }
    },
    "/api/partner/v1/whoami": {
      "get": {
        "description": "Verify a key without importing anything.",
        "operationId": "whoami",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WhoAmIResponse"
                }
              }
            },
            "description": "The organization, user and scopes this key resolves to"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Missing, malformed, revoked or expired API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "The key is valid but lacks the required scope, or the organization is closed."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Rate limit exceeded for this API key. Retry after the window."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            },
            "description": "Internal error. Safe to retry; quote request_id if it persists."
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Which organization and user this API key acts as",
        "tags": [
          "Meta"
        ]
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "servers": [
    {
      "description": "Production",
      "url": "https://api.getmeteoric.io"
    }
  ],
  "tags": [
    {
      "description": "Submit a CSV for import, then poll the job it returns. Imports are asynchronous: the POST only accepts the work.",
      "name": "Contact Lists"
    },
    {
      "description": "Discovery. Which organization a key writes into, and which columns that organization accepts.",
      "name": "Meta"
    }
  ]
}
