{"components":{"schemas":{"AuthSettings":{"properties":{"api_token":{"nullable":true,"type":"string"},"api_token_hash":{"nullable":true,"type":"string"},"enabled":{"type":"boolean"},"external":{"$ref":"#/components/schemas/ExternalAuthSettings"},"password_hash":{"nullable":true,"type":"string"},"roles":{"type":"object"},"username":{"type":"string"},"users":{"items":{"$ref":"#/components/schemas/User"},"type":"array"},"webauthn":{"$ref":"#/components/schemas/WebAuthnSettings"},"webhook_secret":{"nullable":true,"type":"string"},"webhook_secret_hash":{"nullable":true,"type":"string"}},"type":"object"},"AuthoritySettings":{"properties":{"default_conflict_action":{"description":"Legacy conflict default retained in config; object_policies drive current object graph writes.","type":"string"},"object_policies":{"additionalProperties":{"$ref":"#/components/schemas/ObjectAuthorityPolicy"},"type":"object"}},"type":"object"},"ConnectorEnrollmentRequest":{"properties":{"capabilities":{"items":{"type":"string"},"type":"array"},"enrollment_token":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"}},"required":["name","enrollment_token"],"type":"object"},"ConnectorHeartbeat":{"properties":{"capabilities":{"items":{"type":"string"},"type":"array"},"status":{"type":"string"},"version":{"type":"string"}},"type":"object"},"ConnectorLeaseRequest":{"properties":{"command":{"enum":["preview-job","run-job-now"],"type":"string"},"job_id":{"type":"string"},"progress_id":{"type":"string"},"trigger":{"type":"string"}},"required":["job_id"],"type":"object"},"ConnectorLeaseResult":{"properties":{"command":{"type":"string"},"error":{"type":"string"},"job_id":{"type":"string"},"log":{"type":"string"},"result":{"type":"object"},"review_id":{"type":"string"},"status":{"type":"string"}},"type":"object"},"DataPack":{"properties":{"adapter":{"type":"string"},"adapter_builder":{"type":"string"},"adapter_class":{"type":"string"},"aliases":{"items":{"type":"string"},"type":"array"},"capabilities":{"items":{"type":"string"},"type":"array"},"connection_fields":{"items":{"type":"string"},"type":"array"},"icon":{"type":"object"},"mappings":{"items":{"type":"object"},"type":"array"},"readiness":{"type":"object"},"semantic_rules":{"type":"object"},"source":{"type":"string"},"summary":{"type":"string"},"title":{"type":"string"},"version":{"type":"string"}},"required":["source","title"],"type":"object"},"DatabaseSettings":{"properties":{"engine":{"enum":["sqlite","postgresql","mysql","mssql"],"type":"string"},"host":{"type":"string"},"name":{"type":"string"},"password":{"type":"string"},"path":{"type":"string"},"port":{"type":"integer"},"privileged_password":{"type":"string"},"privileged_username":{"type":"string"},"provision":{"properties":{"database":{"type":"boolean"},"schema":{"type":"boolean"},"tables":{"type":"boolean"}},"type":"object"},"schema":{"type":"string"},"ssl_mode":{"type":"string"},"username":{"type":"string"}},"type":"object"},"ExternalAuthProvider":{"additionalProperties":true,"properties":{"authorization_endpoint":{"type":"string"},"bind_dn_template":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"string"},"default_role":{"type":"string"},"display_name_header":{"type":"string"},"email_header":{"type":"string"},"enabled":{"type":"boolean"},"fallback_username_header":{"type":"string"},"groups_claim":{"type":"string"},"groups_header":{"type":"string"},"idp_sso_url":{"type":"string"},"issuer":{"type":"string"},"label":{"type":"string"},"metadata_url":{"type":"string"},"name":{"type":"string"},"role_mappings":{"additionalProperties":{"type":"string"},"description":"Map external group names to local RBAC role names.","type":"object"},"server_uri":{"type":"string"},"token_endpoint":{"type":"string"},"type":{"enum":["header","oidc","adfs","saml","ldap"],"type":"string"},"user_filter":{"type":"string"},"user_search_base":{"type":"string"},"userinfo_endpoint":{"type":"string"},"username_claim":{"type":"string"},"username_header":{"type":"string"}},"required":["name","type"],"type":"object"},"ExternalAuthSettings":{"properties":{"auto_create_users":{"description":"Allow users authenticated by external providers even when no local user exists.","type":"boolean"},"default_role":{"example":"viewer","type":"string"},"enabled":{"type":"boolean"},"providers":{"items":{"$ref":"#/components/schemas/ExternalAuthProvider"},"type":"array"}},"type":"object"},"Job":{"properties":{"apply":{"type":"boolean"},"cron":{"example":"0 * * * *","type":"string"},"destinations":{"description":"Destination ids selected for this job. Empty means every enabled destination plus the native presentation layer.","items":{"type":"string"},"type":"array"},"enabled":{"type":"boolean"},"execution_location":{"default":"local","description":"Use local execution or connector:<connector-id> for customer-side connector execution.","type":"string"},"field_mappings":{"additionalProperties":{"items":{"type":"object"},"type":"array"},"type":"object"},"four_eyes_required":{"type":"boolean"},"limit":{"type":"integer"},"name":{"type":"string"},"no_cache":{"type":"boolean"},"require_review":{"type":"boolean"},"schedule_enabled":{"type":"boolean"},"sources":{"items":{"type":"string"},"type":"array"},"webhook_enabled":{"type":"boolean"},"webhook_secret":{"type":"string"},"webhook_secret_hash":{"type":"string"}},"type":"object"},"LicenseSettings":{"properties":{"exchange_token":{"description":"Signed call-home exchange proof, valid for no more than 24 hours.","nullable":true,"type":"string"},"exchange_url":{"nullable":true,"type":"string"},"exchange_valid_until":{"nullable":true,"type":"string"},"features":{"description":"Licensed feature entitlements enabled for this installation.","items":{"enum":["upload_import_sources","build_pack","external_authentication","cmdb_explorer","source_export","enterprise_sources","unlimited_jobs","unlimited_active_sources"],"type":"string"},"type":"array"},"key":{"nullable":true,"type":"string"},"permanent_exchange_key":{"description":"Offline exchange key that remains valid until its expiry, capped by the license expiry.","nullable":true,"type":"string"}},"type":"object"},"ObjectAuthorityPolicy":{"properties":{"create":{"type":"boolean"},"overwrite_existing":{"type":"boolean"},"overwrite_with_null":{"type":"boolean"},"update":{"type":"boolean"},"update_fields":{"items":{"type":"string"},"type":"array"},"update_relations":{"items":{"type":"string"},"type":"array"}},"type":"object"},"RunRequest":{"properties":{"apply":{"type":"boolean"},"job_id":{"type":"string"},"limit":{"minimum":1,"type":"integer"},"no_cache":{"type":"boolean"},"sources":{"items":{"type":"string"},"type":"array"}},"type":"object"},"Settings":{"properties":{"auth":{"$ref":"#/components/schemas/AuthSettings"},"authority":{"$ref":"#/components/schemas/AuthoritySettings"},"database":{"$ref":"#/components/schemas/DatabaseSettings"},"jobs":{"type":"object"},"license":{"$ref":"#/components/schemas/LicenseSettings"},"netbox":{"type":"object"},"proxy":{"type":"object"},"runner":{"type":"object"},"sources":{"type":"object"},"validation":{"type":"object"}},"type":"object"},"User":{"properties":{"api_token":{"type":"string"},"api_token_hash":{"type":"string"},"api_tokens":{"items":{"properties":{"created_at":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"},"token_hash":{"type":"string"}},"type":"object"},"type":"array"},"password_hash":{"type":"string"},"role":{"type":"string"},"username":{"type":"string"}},"type":"object"},"WebAuthnSettings":{"properties":{"credentials":{"type":"object"},"enabled":{"type":"boolean"},"origin":{"type":"string"},"rp_id":{"type":"string"},"rp_name":{"type":"string"},"timeout_seconds":{"type":"integer"}},"type":"object"}},"securitySchemes":{"ApiToken":{"in":"header","name":"X-API-Token","type":"apiKey"},"BearerAuth":{"scheme":"bearer","type":"http"},"WebhookSecret":{"in":"header","name":"X-Webhook-Secret","type":"apiKey"}}},"info":{"title":"VeridataOps API","version":"0.1.0"},"openapi":"3.0.3","paths":{"/api/auth/external":{"get":{"summary":"Read external authentication configuration","tags":["Authentication"]},"put":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalAuthSettings"}}},"required":true},"summary":"Replace external authentication configuration","tags":["Authentication"]}},"/api/auth/passkeys/available":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"username":{"type":"string"}},"required":["username"],"type":"object"}}},"required":true},"summary":"Check whether the supplied username has a passkey in its resolved tenant","tags":["Authentication"]}},"/api/auth/passkeys/login/options":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"username":{"type":"string"}},"type":"object"}}},"required":true},"summary":"Create WebAuthN passkey login options","tags":["Authentication"]}},"/api/auth/passkeys/login/verify":{"post":{"summary":"Verify a WebAuthN passkey login response","tags":["Authentication"]}},"/api/auth/passkeys/register/options":{"post":{"summary":"Create WebAuthN passkey registration options for the signed-in user","tags":["Authentication"]}},"/api/auth/passkeys/register/verify":{"post":{"summary":"Verify a WebAuthN passkey registration response","tags":["Authentication"]}},"/api/auth/passkeys/{passkey_id}/delete":{"post":{"parameters":[{"in":"path","name":"passkey_id","required":true,"schema":{"type":"string"}}],"summary":"Delete a passkey for the signed-in user","tags":["Authentication"]}},"/api/auth/webauthn":{"get":{"summary":"Read WebAuthN/passkey configuration","tags":["Authentication"]},"put":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebAuthnSettings"}}},"required":true},"summary":"Replace WebAuthN/passkey configuration","tags":["Authentication"]}},"/api/connectors":{"get":{"summary":"List enrolled customer-side connectors","tags":["Connectors"]}},"/api/connectors/enroll":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorEnrollmentRequest"}}},"required":true},"summary":"Enroll a customer-side connector with an enrollment token","tags":["Connectors"]}},"/api/connectors/enrollment-token":{"post":{"summary":"Generate a one-time visible connector enrollment token","tags":["Connectors"]}},"/api/connectors/{connector_id}/heartbeat":{"parameters":[{"description":"Connector identifier","in":"path","name":"connector_id","required":true,"schema":{"type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorHeartbeat"}}},"required":true},"summary":"Update connector heartbeat and runtime metadata","tags":["Connectors"]}},"/api/connectors/{connector_id}/leases":{"parameters":[{"description":"Connector identifier","in":"path","name":"connector_id","required":true,"schema":{"type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorLeaseRequest"}}},"required":true},"summary":"Queue a job work lease for a connector","tags":["Connectors"]}},"/api/connectors/{connector_id}/leases/{lease_id}/complete":{"parameters":[{"description":"Connector identifier","in":"path","name":"connector_id","required":true,"schema":{"type":"string"}},{"description":"Connector lease identifier","in":"path","name":"lease_id","required":true,"schema":{"type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorLeaseResult"}}},"required":true},"summary":"Complete a connector work lease","tags":["Connectors"]}},"/api/connectors/{connector_id}/poll":{"parameters":[{"description":"Connector identifier","in":"path","name":"connector_id","required":true,"schema":{"type":"string"}}],"post":{"summary":"Poll outbound for the next connector work lease","tags":["Connectors"]}},"/api/data-packs/builder":{"get":{"summary":"Read data-pack builder defaults and option catalogs","tags":["Data Packs"]}},"/api/data-packs/builder/classify":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"pack":{"$ref":"#/components/schemas/DataPack"},"sample_json":{"type":"string"}},"type":"object"}}},"required":true},"summary":"Classify sample source fields toward the semantic model","tags":["Data Packs"]}},"/api/data-packs/builder/export":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataPack"}}},"required":true},"summary":"Export a data-pack draft as YAML","tags":["Data Packs"]}},"/api/data-packs/builder/install":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataPack"}}},"required":true},"summary":"Install a validated data-pack draft","tags":["Data Packs"]}},"/api/data-packs/builder/sample-request":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"summary":"Run an initial API request for the data-pack builder","tags":["Data Packs"]}},"/api/data-packs/builder/validate":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataPack"}}},"required":true},"summary":"Validate a data-pack draft","tags":["Data Packs"]}},"/api/data-packs/distribution":{"get":{"summary":"Read the configured data-pack distribution catalog","tags":["Data Packs"]}},"/api/data-packs/distribution/install":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"pack_id":{"type":"string"}},"required":["pack_id"],"type":"object"}}},"required":true},"summary":"Install a data-pack from the configured distribution catalog","tags":["Data Packs"]}},"/api/data-packs/upload":{"post":{"requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"data_pack":{"format":"binary","type":"string"}},"required":["data_pack"],"type":"object"}}},"required":true},"summary":"Upload and install a packaged source or destination definition","tags":["Data Packs"]}},"/api/destination-contracts":{"get":{"parameters":[{"in":"query","name":"semantic_key","required":false,"schema":{"items":{"type":"string"},"type":"array"}}],"summary":"Read estate destination contracts with current plugin availability","tags":["Contracts"]}},"/api/destinations":{"get":{"summary":"List configured destinations including the native presentation layer","tags":["Destinations"]}},"/api/estate-contracts":{"get":{"summary":"Read first-class estate object contracts and target policies","tags":["Contracts"]}},"/api/estate-taxonomy":{"get":{"summary":"Read estate discovery taxonomy and source capabilities","tags":["Contracts"]}},"/api/estate/presentation":{"get":{"summary":"Read collected estate presentation records","tags":["Destinations"]}},"/api/estate/presentation/export":{"get":{"summary":"Export collected estate presentation records as JSON, CSV, or Excel","tags":["Destinations"]}},"/api/estate/presentation/templates":{"get":{"summary":"List available estate presentation templates","tags":["Destinations"]}},"/api/jobs":{"get":{"summary":"Read jobs","tags":["Jobs"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}},"required":true},"summary":"Create one job","tags":["Jobs"]}},"/api/jobs/{job_id}":{"delete":{"summary":"Delete one job","tags":["Jobs"]},"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}},"required":true},"summary":"Create or replace one job","tags":["Jobs"]}},"/api/jobs/{job_id}/dependency-advice":{"get":{"summary":"Read recommended relation dependencies for one job","tags":["Jobs"]},"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}}]},"/api/jobs/{job_id}/evidence":{"get":{"summary":"Read durable provenance/evidence records for one job","tags":["Jobs"]},"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}}]},"/api/jobs/{job_id}/impact":{"get":{"summary":"Read semantic object impact for one job","tags":["Jobs"]},"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}}]},"/api/jobs/{job_id}/reviews":{"get":{"summary":"Read pending reviews for one job","tags":["Jobs"]},"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}}]},"/api/jobs/{job_id}/run-now":{"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}}],"post":{"summary":"Run one job now using its review/apply policy","tags":["Jobs"]}},"/api/jobs/{job_id}/runs":{"get":{"summary":"Read previous runs for one job","tags":["Jobs"]},"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}}]},"/api/jobs/{job_id}/runs/{run_id}/cancel":{"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}},{"description":"Run identifier","in":"path","name":"run_id","required":true,"schema":{"type":"string"}}],"post":{"summary":"Request cancellation for an active job run","tags":["Jobs"]}},"/api/jobs/{job_id}/runs/{run_id}/resume":{"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}},{"description":"Run identifier","in":"path","name":"run_id","required":true,"schema":{"type":"string"}}],"post":{"summary":"Resume failed source steps from one job run","tags":["Jobs"]}},"/api/jobs/{job_id}/webhook-secret":{"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}}],"post":{"summary":"Generate and return a one-time visible webhook secret for one job","tags":["Jobs"]}},"/api/license/exchange":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"exchange_url":{"type":"string"},"key":{"type":"string"},"permanent_exchange_key":{"type":"string"}},"type":"object"}}},"required":false},"summary":"Run tenant-initiated license call-home and store the refreshed proof","tags":["Settings"]}},"/api/lookup":{"get":{"parameters":[{"in":"query","name":"identifier","required":true,"schema":{"type":"string"}},{"in":"query","name":"source","required":false,"schema":{"items":{"type":"string"},"type":"array"}}],"summary":"Search enabled sources and NetBox by an arbitrary identifier","tags":["Lookup"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"identifier":{"type":"string"},"no_cache":{"type":"boolean"},"serial":{"type":"string"},"sources":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"summary":"Search enabled sources and NetBox by an arbitrary identifier","tags":["Lookup"]}},"/api/north-star":{"get":{"summary":"Read the acquisition truth-model alignment contract","tags":["Contracts"]}},"/api/openapi.json":{"get":{"summary":"OpenAPI document","tags":["Settings"]}},"/api/progress/{progress_id}":{"get":{"summary":"Read progress for a background run","tags":["Runs"]},"parameters":[{"description":"Progress identifier","in":"path","name":"progress_id","required":true,"schema":{"type":"string"}}]},"/api/progress/{progress_id}/cancel":{"parameters":[{"description":"Progress identifier","in":"path","name":"progress_id","required":true,"schema":{"type":"string"}}],"post":{"summary":"Request cancellation for a background run","tags":["Runs"]}},"/api/reviews":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunRequest"}}},"required":true},"summary":"Create a dry-run review","tags":["Reviews"]}},"/api/reviews/{review_id}":{"delete":{"summary":"Discard a saved pending review without committing it","tags":["Reviews"]},"get":{"summary":"Read a saved review","tags":["Reviews"]},"parameters":[{"description":"Review identifier","in":"path","name":"review_id","required":true,"schema":{"type":"string"}}]},"/api/reviews/{review_id}/commit":{"parameters":[{"description":"Review identifier","in":"path","name":"review_id","required":true,"schema":{"type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"approve_all":{"description":"Explicitly commit all non-conflict creates and updates.","type":"boolean"},"change_keys":{"description":"Create/update/conflict change keys to commit.","items":{"type":"string"},"type":"array"},"override_change_keys":{"description":"Conflict change keys whose conflicting incoming values should override existing NetBox values.","items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":false},"summary":"Commit a previously reviewed sync","tags":["Reviews"]}},"/api/run":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunRequest"}}},"required":true},"summary":"Run a dry-run sync","tags":["Runs"]}},"/api/semantic-contract":{"get":{"summary":"Read semantic mapping contract and object authority policies","tags":["Contracts"]}},"/api/settings":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Settings"}}},"description":"Saved application settings"}},"summary":"Read the complete saved configuration","tags":["Settings"]},"put":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Settings"}}},"required":true},"summary":"Replace the complete saved configuration","tags":["Settings"]}},"/api/settings/database/provision-plan":{"get":{"summary":"Read the current database schema provisioning plan","tags":["Settings"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseSettings"}}},"required":true},"summary":"Preview a database schema provisioning plan","tags":["Settings"]}},"/api/settings/logo":{"post":{"requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"logo":{"format":"binary","type":"string"}},"required":["logo"],"type":"object"}}},"required":true},"summary":"Upload the UI logo","tags":["Settings"]}},"/api/settings/netbox-fields":{"post":{"summary":"Reload NetBox module fields, custom fields, and plugin capabilities","tags":["Settings"]}},"/api/source-cache":{"delete":{"summary":"Purge all source cache entries","tags":["Cache"]},"get":{"summary":"Read source cache summaries","tags":["Cache"]}},"/api/source-cache/{source_name}":{"delete":{"summary":"Purge source cache entries for one source","tags":["Cache"]},"parameters":[{"description":"Source name","in":"path","name":"source_name","required":true,"schema":{"type":"string"}}]},"/api/source-types":{"get":{"summary":"Read registered source types, aliases, setup instructions, capabilities, and readiness","tags":["Sources"]}},"/api/sources":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"config":{"type":"object"},"name":{"type":"string"},"source_type":{"type":"string"}},"required":["name","source_type"],"type":"object"}}},"required":true},"summary":"Create one source from a registered source type","tags":["Sources"]}},"/api/sources/{source_name}":{"get":{"summary":"Read one source configuration","tags":["Sources"]},"parameters":[{"description":"Source name","in":"path","name":"source_name","required":true,"schema":{"type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":true},"summary":"Replace one source configuration","tags":["Sources"]}},"/api/sources/{source_name}/capabilities":{"get":{"summary":"Read estate evidence capabilities for one source","tags":["Sources"]},"parameters":[{"description":"Source name","in":"path","name":"source_name","required":true,"schema":{"type":"string"}}]},"/api/sources/{source_name}/export":{"get":{"summary":"Export one installed source as a data-pack ZIP archive","tags":["Sources"]},"parameters":[{"description":"Source name","in":"path","name":"source_name","required":true,"schema":{"type":"string"}}]},"/api/sources/{source_name}/instructions":{"get":{"summary":"Read concise setup and digestion instructions for one source","tags":["Sources"]},"parameters":[{"description":"Source name","in":"path","name":"source_name","required":true,"schema":{"type":"string"}}]},"/api/sources/{source_name}/mappings":{"parameters":[{"description":"Source name","in":"path","name":"source_name","required":true,"schema":{"type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"field_mappings":{"items":{"type":"object"},"type":"array"}},"type":"object"}}},"required":true},"summary":"Replace field mappings for one source","tags":["Sources"]}},"/api/sources/{source_name}/reload-netbox-fields":{"parameters":[{"description":"Source name","in":"path","name":"source_name","required":true,"schema":{"type":"string"}}],"post":{"summary":"Reload NetBox module fields, custom fields, and plugin capabilities","tags":["Sources"]}},"/api/sources/{source_name}/reload-source-fields":{"parameters":[{"description":"Source name","in":"path","name":"source_name","required":true,"schema":{"type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"limit":{"minimum":1,"type":"integer"}},"type":"object"}}},"required":false},"summary":"Pull sample records and rediscover source fields","tags":["Sources"]}},"/api/status/summary":{"get":{"summary":"Read NetBox sidecar status, latest job runs, and sync cues","tags":["Monitoring"]}},"/api/users":{"get":{"summary":"Read users and roles","tags":["Users"]},"put":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"roles":{"type":"object"},"users":{"items":{"$ref":"#/components/schemas/User"},"type":"array"}},"type":"object"}}},"required":true},"summary":"Replace users and roles","tags":["Users"]}},"/api/users/{username}/api-token":{"parameters":[{"description":"Username","in":"path","name":"username","required":true,"schema":{"type":"string"}}],"post":{"summary":"Generate and return a one-time visible API token for one user","tags":["Users"]}},"/auth/{provider_name}/callback":{"get":{"parameters":[{"in":"query","name":"state","required":true,"schema":{"type":"string"}},{"in":"query","name":"code","required":false,"schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to the requested page"}},"summary":"Complete an OIDC or ADFS authorization-code sign-in","tags":["Authentication"]},"parameters":[{"description":"External auth provider name","in":"path","name":"provider_name","required":true,"schema":{"type":"string"}}],"post":{"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"properties":{"RelayState":{"type":"string"},"SAMLResponse":{"type":"string"}},"required":["RelayState","SAMLResponse"],"type":"object"}}},"required":true},"responses":{"302":{"description":"Redirect to the requested page"}},"summary":"Complete a SAML POST binding sign-in","tags":["Authentication"]}},"/auth/{provider_name}/login":{"get":{"parameters":[{"in":"query","name":"next","required":false,"schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to identity provider"}},"summary":"Start an external OIDC, ADFS, or SAML browser sign-in","tags":["Authentication"]},"parameters":[{"description":"External auth provider name","in":"path","name":"provider_name","required":true,"schema":{"type":"string"}}]},"/metrics":{"get":{"/api/settings/logs":{"get":{"summary":"Read recent application logs for the settings log viewer"}},"responses":{"200":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Prometheus text exposition"}},"summary":"Read Prometheus metrics for server, jobs, sources, cache, and license state","tags":["Monitoring"]}},"/webhooks/jobs/{job_id}":{"parameters":[{"description":"Job identifier","in":"path","name":"job_id","required":true,"schema":{"type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}},"required":false},"summary":"Trigger a job from an external webhook","tags":["Webhooks"]}}},"tags":[{"name":"Settings"},{"name":"Authentication"},{"name":"Users"},{"name":"Jobs"},{"name":"Reviews"},{"name":"Runs"},{"name":"Sources"},{"name":"Data Packs"},{"name":"Lookup"},{"name":"Cache"},{"name":"Contracts"},{"name":"Destinations"},{"name":"Monitoring"},{"name":"Connectors"},{"name":"Webhooks"}]}
