All Downloads are FREE. Search and download functionalities are using the official Maven repository.

models.dsl.examples.cardinalityoverrides.TaxBlaster.rapid Maven / Gradle / Ivy

There is a newer version: 1.4.2
Show newest version
/* 
  This example shows cardinality overrides.  The data type definition for Person 
  allows zero or more addresses, but the TaxBlaster system requires at least one
  address.  This additional constraint is enforced in PersonObject and 
  PersonCollection, within the includedProperties list.
*/
rapidModel TaxBlaster
	resourceAPI TaxBlasterInterface baseURI "http://taxblaster.com/api"

		/** The Index Resource is the entry point to the TaxBlaster API. To minimize 
		    coupling, consuming applications should start here, and follow the links to 
		    related resources. */
		objectResource IndexObject type Index
			URI index
			/* 
			   By default, reference links will use the reference property name
			   as the link relation.  Here, we are overriding the reference 
			   links to use the IANA-registered 'subsection' link relation.
			   
			   http://www.iana.org/assignments/link-relations/link-relations.xhtml
			*/
			referenceLink > people
				targetResource PersonCollection
				linkRelation subsection
			referenceLink > taxFilings
				targetResource TaxFilingCollection
				linkRelation subsection
			mediaTypes
				application/json
			method GET getIndex
				response IndexObject statusCode 200
				response statusCode 404

		/** The list of Tax Filings visible to the authorized user. */
		default collectionResource TaxFilingCollection type TaxFiling
			URI /taxFilings
			mediaTypes
				application/json
			method GET getTaxFilingCollection
				request
				response TaxFilingCollection statusCode 200
			method POST updateTaxFilingCollection
				request TaxFilingCollection
				response statusCode 200
				response statusCode 400
		/** The list of TaxBlaster users.  The results will vary in membership and level 
		    of detail, depending on your access privileges. */
		default collectionResource PersonCollection type Person
			URI /people
			only properties
				taxpayerID
				lastName
				firstName
				otherNames
				netWorth
				netWorthSpecialValue
				preferredLanguage
				DOB
				taxFilings
				addresses+ // must have at least one address
			mediaTypes
				application/json
			method GET getPersonCollection
				request
				response PersonCollection statusCode 200
			method POST updatePersonCollection
				request PersonCollection
				response statusCode 200
				response statusCode 400
		/** An individual Tax Filing record, accessed by its ID */
		objectResource TaxFilingObject type TaxFiling
			URI taxFilings/{id}
				/** filingID of the requested TaxFiling */
				required templateParam id property filingID
			referenceLink > taxpayer
				targetResource PersonObject 
				targetProperties 
					taxpayerID 
					firstName
			mediaTypes
				application/json
			method GET getTaxFiling
				request
				response TaxFilingObject statusCode 200
				response statusCode 404
		/** An individual user by ID. */
		objectResource PersonObject type Person
			URI people/{id}
				/** taxpayerID of the requested Person */
				required templateParam id property taxpayerID
			only properties
				taxpayerID
				lastName
				firstName
				otherNames
				netWorth
				netWorthSpecialValue
				preferredLanguage
				DOB
				taxFilings
				addresses+ // must have at least one address
			mediaTypes
				application/json
			method GET getPersonObject
				request
				response PersonObject statusCode 200
			method PUT putPersonObject
				request PersonObject
				response statusCode 200
				response statusCode 400
		objectResource PersonTaxFilingCollection type Person
			URI /people/{id}/taxFilings
			/* Subset of person properties included here. */
			only properties
				taxpayerID
				lastName
				firstName
			/* Tax filings data will be embedded within the Person representation. */
			referenceEmbed > taxFilings
				targetProperties
					currency 
					filingID
					grossIncome
					jurisdiction
					period
					status
					taxLiability
					year
			mediaTypes
				application/json
			method GET getPersonTaxFilingCollection
				request
				response PersonTaxFilingCollection statusCode 200
			method PUT putPersonTaxFilingCollection
				request PersonTaxFilingCollection
				response statusCode 200
				response statusCode 400
	/** Supporting data types for the TaxBlaster API */
	dataModel TaxBlasterDataModel
		/** A tax filing record for a given user, in a given tax jurisdiction, in a 
		    specified tax year. */
		structure TaxFiling
			/** A unique, system-assigned identifier for the tax filing. */
			filingID : string
			/** Reference to the person who owns this filing. */
			taxpayer : reference to Person inverse taxFilings
			/** Country, province, state or local tax authority where this is being filed. 
			    */
			jurisdiction : string
			/** Tax year */
			year : gYear
			/** Period within the year, if any */
			period : int
			/** Currency code */
			currency : CurrencyCodeEnum
			/** Total income reported on tax filing. */
			grossIncome : decimal
			/** Net tax liability */
			taxLiability : decimal
			/** Tax filing status */
			status : TaxFilingStatusEnum
		/** A TaxBlaster user. */
		structure Person
			/** A unique, system-assigned identifier for the user. */
			taxpayerID : string
			/** Legal family name. */
			lastName : string
			/** Legal first name. */
			firstName : string
			/** Names previously used **/
			otherNames : string*
			/** Net worth, if known */
			netWorth : decimal
			/** Net worth special value */
			netWorthSpecialValue : SpecialValueEnum
			/** Preferred language for communications with this person */
			preferredLanguage : string
			/** Date of birth */
			DOB : date
			/* Inverse reference to TaxFilings.  PersonObject will have 
			   a list of hyperlinks to TaxFilingObject, the inverse of the 
			   TaxFilingObject.taxpayer hyperlink. Note that the inverse 
			   keyword must also be specified on TaxFiling.taxpayer
			*/
			/** Tax filings on record for this individual */
			taxFilings : reference to TaxFiling* inverse taxpayer
			/** Postal addresses, zero or more */
			addresses : containing Address*

		/** The supporting data type for the Index resource.  Not meaningful as a 
		    business entity, but required to support a single point of entry. */
		structure Index
			people : reference to Person*
			taxFilings : reference to TaxFiling*

		/** Tax filing status enumeration, using default values */
		enum int TaxFilingStatusEnum
			DRAFT
			PENDING_CPA_REVIEW
			PENDING_CLIENT_REVIEW
			FILED
			AMENDED
			CLOSED

		/** Special Value Enum, using explicit integer values */
		enum int SpecialValueEnum
			NORMAL_VALUE : 0
			NOT_AVAILABLE : -65534
			NOT_APPLICABLE : -65533
			RESTRICTED : -65532

		/** Currency code enum, using explicit string values */
		enum string CurrencyCodeEnum
			EUR : "Euro"
			CAD : "Canadian Dollar"
			USD : "US Dollar"
			CHF : "Swiss Franc"
			JPY : "Japanese Yen"
			INR : "Indian Rupee"
			BRL : "Brazilian Real"
		/** Postal address */
		structure Address
			street1 : string
			street2 : string?
			city : string
			stateOrProvince : string
			postalCode : string
			country : string




© 2015 - 2024 Weber Informatics LLC | Privacy Policy